QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 15221|回复: 30
打印 上一主题 下一主题

CORDIC算法的matlab实现

[复制链接]
字体大小: 正常 放大
大笨象 实名认证       

42

主题

11

听众

2119

积分

di_dar

  • TA的每日心情
    无聊
    2015-1-15 22:05
  • 签到天数: 79 天

    [LV.6]常住居民II

    自我介绍
    隐秘盛开

    优秀斑竹奖 新人进步奖 发帖功臣

    群组Matlab讨论组

    群组数学趣味、游戏、IQ等

    群组数学建模

    群组SIMULINK

    群组LINGO

    跳转到指定楼层
    1#
    发表于 2011-6-7 11:12 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    本帖最后由 大笨象 于 2011-6-7 12:26 编辑 . T' u9 e, ?# Q9 _8 P6 E: L1 c/ L; S! B

    / w. @' `5 U0 h: w% A. o不知道有木有人研究这个,比较偏向于硬件描述。
    / {! e- w* P4 s今天先发一个sine cose函数的实现。
    * }8 a  O( m# Z( ]9 v+ N, i/ F4 Z有兴趣的可以看一下,m文件见附件。0 \" d2 D2 {7 j+ ^
    function v=f_cordic(beta,n)
    5 Y+ }' F! \7 m5 G. vif beta < -pi/2 || beta > pi/2
    0 H' B3 |( t/ X% H7 J1 O+ E" |    if beta < 0
    + I: V: E* Q6 J9 s8 n- F        v=f_cordic(beta + pi,n);
    4 b1 K- w" J8 j  |! @1 e4 U    else- T0 [# F; a# _$ A' y
            v=f_cordic(beta - pi,n);  T! [& J( @; W# p# q5 R9 u& }9 S
        end* u0 l- ^: |) G
        v = -v;% flip the sign for second or third quadrant4 J, `3 b- _' m; _. I) R! P, O4 |
        return
    & J, v" F/ G: m$ O1 r. z5 n# w+ Oend
    2 S# I# x; Q# s1 y. e- M$ K. W8 p) L  m4 z% Initialization of tables of constants used by CORDIC; M3 K: @0 Y; U# C; [& |( H9 [
    % need a table of arctangents of negative powers of two, in radians:* y; y! W$ G* R5 O% h
    % angles = atan(2.^-(0:27));  V# X" l" U$ w" p" T/ C7 o3 {! U/ L
    angles =  [  ...
    * }; L) R5 i6 s" m    0.78539816339745   0.46364760900081   0.24497866312686   0.12435499454676 ...& K2 m  c# u/ k, [8 ^
        0.06241880999596   0.03123983343027   0.01562372862048   0.00781234106010 ...1 ~0 A! d; S; E' }3 S4 L
        0.00390623013197   0.00195312251648   0.00097656218956   0.00048828121119 ...4 z3 A! Q5 u; ~- U  P
        0.00024414062015   0.00012207031189   0.00006103515617   0.00003051757812 ...
    * j' F5 e, c& a" |: _2 _& l& F& V    0.00001525878906   0.00000762939453   0.00000381469727   0.00000190734863 ...
    4 q2 {" n! \% d) h) Y+ p    0.00000095367432   0.00000047683716   0.00000023841858   0.00000011920929 ...
    2 j  }: ~9 z- A9 X* ^    0.00000005960464   0.00000002980232   0.00000001490116   0.00000000745058 ];& O# H5 Z  m: Z2 i
    % and a table of products of reciprocal lengths of vectors [1, 2^-j]:! Y' m# E, e: n0 K( U
    Kvalues = [ ...5 p- f$ |4 T( d5 j  f, L& ]
        0.70710678118655   0.63245553203368   0.61357199107790   0.60883391251775 ...  F; n0 u: e! m1 }# Z" ?% @
        0.60764825625617   0.60735177014130   0.60727764409353   0.60725911229889 ...! H1 j! N& m( h
        0.60725447933256   0.60725332108988   0.60725303152913   0.60725295913894 ..." ~# D6 g* r% O) ]
        0.60725294104140   0.60725293651701   0.60725293538591   0.60725293510314 ...
      `# W1 [* ?8 a/ k% n, @% a    0.60725293503245   0.60725293501477   0.60725293501035   0.60725293500925 ...' a& Q7 Z2 c6 B. e& Y7 v/ f2 u* l
        0.60725293500897   0.60725293500890   0.60725293500889   0.60725293500888 ];
    ) v& b2 a; }' W1 j  {+ v9 R! U. w5 }Kn = Kvalues(min(n, length(Kvalues)));2 b+ ]2 E" J$ _: K2 i" F

    ; Y2 T$ l  s. w& ^% j: x% Initialize loop variables:, U6 |8 _: A# X: t
    v = [1;0]; % start with 2-vector cosine and sine of zero
    8 j. l* H4 g  t: z$ E3 j) _# fpoweroftwo = 1;
    , U: \* v* n7 \+ i2 W8 `, y7 l% Iterations
    9 l7 N2 |5 H, U: ?# B( zfor j = 1:n;7 p$ {( G, ~" ]1 h+ H+ h1 I
        if beta < 0# s/ p% G9 q0 ]# ]- P+ Y$ F
            sigma = -1;' Y; v+ \4 f/ ?" K
        else
    % I* s; P: A/ v, b- p4 ~* A  ~" f        sigma = 1;8 @5 D6 i9 ?/ A3 `: a8 x% O3 z1 p) K
        end
    7 i9 g( z) x4 ]" i3 ?$ {! p/ n# W    % update the angle from table, or eventually by just dividing by two
    - }3 O3 I, I6 ?7 ~+ ^    if j <= length(angles)
    . W1 G; ]3 g8 Y1 O' a- y7 x        angle = angles(j);" g( y: j, e6 t' ]: F
        else
    " _/ R9 K$ U* Q8 `3 y5 z: t        angle = angle/2;4 R: A$ K; t' G
        end9 X9 e9 o: f: C# l4 h5 ]
        factor = sigma * poweroftwo;. W6 f% V9 E4 t( w
        R = [1, -factor; factor, 1];  O( g2 R7 d6 ~& B1 y
        v = R * v; % 2-by-2 mtrix multiply
    & i* w* S+ Y7 ^6 [8 d    beta = beta - sigma * angle; % update the remaining angle! T* \: F  D4 F: H5 O, Y
        poweroftwo = poweroftwo / 2;
    / S4 D7 X' ^7 C5 t3 wend" h2 X6 T* Q" ]1 Y" b) J
    % Adjust length of output vector to be [cos(beta), sin(beta)]:
    3 Y; @& L- U0 s1 T! p3 C. mv = v * Kn;9 A4 V- u% W, ?% r& o" C1 o; `
    return, G" n- f8 e- ~8 Q" O! `7 r/ |) M
    8 A% ]; f( v9 b& k. \* ^
    使用20位寄存器,仿真波形如下:
    7 K( i7 A# ~/ n) }5 S0 r9 W 仿真波形
    9 q8 T5 `* y* H5 L4 Z

    f_cordic.m

    2.25 KB, 下载次数: 21, 下载积分: 体力 -2 点

    CORDIC算法

    点评

    Ling619400  给力  发表于 2015-2-1 22:31
    zan
    已有 2 人评分体力 收起 理由
    sdccumcm + 5 很给力!
    厚积薄发 + 5 赞一个!

    总评分: 体力 + 10   查看全部评分

    转播转播0 分享淘帖0 分享分享1 收藏收藏2 支持支持3 反对反对0 微信微信
    我正在用金山快盘。http://www.kuaipan.cn/?channel=6ohsg7

    0

    主题

    1

    听众

    4

    积分

    升级  80%

    该用户从未签到

    邮箱绑定达人

    回复

    使用道具 举报

    Lsiten        

    2

    主题

    11

    听众

    113

    积分

  • TA的每日心情
    开心
    2015-12-2 16:21
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    邮箱绑定达人

    回复

    使用道具 举报

    0

    主题

    7

    听众

    158

    积分

    升级  29%

  • TA的每日心情
    开心
    2013-8-22 19:07
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    自我介绍
    学数学的,对数学建模很有兴趣。

    群组第四届数学中国美赛实

    群组09年国际数学建模群—鹰之队

    回复

    使用道具 举报

    sdccumcm 实名认证      会长俱乐部认证 

    59

    主题

    165

    听众

    5484

    积分

    升级  9.68%

  • TA的每日心情
    开心
    2015-9-28 12:07
  • 签到天数: 832 天

    [LV.10]以坛为家III

    邮箱绑定达人 发帖功臣 新人进步奖 风雨历程奖 最具活力勋章

    群组MCM优秀论文解析专题

    群组2012第二期MCM/ICM优秀

    群组科学狂想曲

    群组第二届数模基础实训

    群组学术交流B

    回复

    使用道具 举报

    大笨象 实名认证       

    42

    主题

    11

    听众

    2119

    积分

    di_dar

  • TA的每日心情
    无聊
    2015-1-15 22:05
  • 签到天数: 79 天

    [LV.6]常住居民II

    自我介绍
    隐秘盛开

    优秀斑竹奖 新人进步奖 发帖功臣

    群组Matlab讨论组

    群组数学趣味、游戏、IQ等

    群组数学建模

    群组SIMULINK

    群组LINGO

    羅雲琦 发表于 2011-6-9 22:32 2 ~% c$ e) O% ^, D+ v
    有什麽用?求解

    $ X! p: j# G0 A+ m3 R可以使用硬件实现啊。使用加法器和移位寄存器就可以计算三角函数。
    回复

    使用道具 举报

    1

    主题

    5

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    郁闷
    2014-12-16 21:22
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    群组学术交流A

    回复

    使用道具 举报

    1

    主题

    5

    听众

    129

    积分

    升级  14.5%

  • TA的每日心情
    郁闷
    2014-12-16 21:22
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    群组学术交流A

    回复

    使用道具 举报

    alair003        
    头像被屏蔽

    1

    主题

    4

    听众

    345

    积分

    升级  15%

  • TA的每日心情

    2012-2-7 18:36
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    晨宸        

    0

    主题

    2

    听众

    77

    积分

    升级  75.79%

  • TA的每日心情
    开心
    2012-9-6 17:55
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    群组学术交流C

    群组学术交流D

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-9 11:27 , Processed in 0.372138 second(s), 105 queries .

    回顶部