QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 14607|回复: 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 编辑 # w" f. z6 i" @, T2 P# Q- p5 `
    4 h: M, x3 a6 }% ?% U7 V
    不知道有木有人研究这个,比较偏向于硬件描述。
    + Z" H) M0 n, x+ V% M今天先发一个sine cose函数的实现。
    8 D* I# k$ N5 B' V+ ]有兴趣的可以看一下,m文件见附件。2 |( o( f+ a: q2 p; f
    function v=f_cordic(beta,n)
    ! A$ E* u% J( A6 W' gif beta < -pi/2 || beta > pi/2
    7 S$ q+ Q; d0 V* \8 K( e    if beta < 0. m  z) Z; K2 A% m8 Q  i, u
            v=f_cordic(beta + pi,n);; b. L9 r1 R( m7 X$ k% w
        else0 c9 @: m) k4 v3 U6 u( d
            v=f_cordic(beta - pi,n);
    . P, q/ j2 x6 a    end3 f3 t; Z$ s9 w+ @. j% F* e0 w
        v = -v;% flip the sign for second or third quadrant" Z5 x/ I' k1 O+ E7 ~: ~3 B" n
        return( }8 w' W3 c, W, r
    end/ B1 C; r% ^" I$ ?4 Z
    % Initialization of tables of constants used by CORDIC
    $ E- t- s$ @2 S- V6 W% need a table of arctangents of negative powers of two, in radians:" i4 ~/ F9 m* P# v" r8 i
    % angles = atan(2.^-(0:27));( U1 X3 V8 _3 e; b7 g$ z4 p; I
    angles =  [  ...
    ' r. c9 K' H% H) M    0.78539816339745   0.46364760900081   0.24497866312686   0.12435499454676 ...
    + D& Y, P# U3 d# z1 U* o    0.06241880999596   0.03123983343027   0.01562372862048   0.00781234106010 ...% F, _' y" W7 P; G: [7 k7 D
        0.00390623013197   0.00195312251648   0.00097656218956   0.00048828121119 ...
    $ {0 o! W2 Q( S' `5 y! l    0.00024414062015   0.00012207031189   0.00006103515617   0.00003051757812 ...& D) {; U( A7 c: e% ]5 U, ?* g4 ?
        0.00001525878906   0.00000762939453   0.00000381469727   0.00000190734863 ...
      x/ R6 G5 Q3 W' _: M$ O7 y    0.00000095367432   0.00000047683716   0.00000023841858   0.00000011920929 ...( Z. v5 q: a$ d1 w( S1 E
        0.00000005960464   0.00000002980232   0.00000001490116   0.00000000745058 ];
    ' {9 N$ p' A0 o2 p' ~/ F2 P- _% and a table of products of reciprocal lengths of vectors [1, 2^-j]:( J  d% j& S% x7 s
    Kvalues = [ ...
    ! J; |4 ?* B* P4 i7 |' A    0.70710678118655   0.63245553203368   0.61357199107790   0.60883391251775 ...# ?3 j( {7 M3 L$ N- v; M
        0.60764825625617   0.60735177014130   0.60727764409353   0.60725911229889 ...
    5 b( U: F8 ?/ H& s. @/ O    0.60725447933256   0.60725332108988   0.60725303152913   0.60725295913894 ...4 @$ C1 [! G  D' f7 L4 w
        0.60725294104140   0.60725293651701   0.60725293538591   0.60725293510314 ...
    ) X& G& T% L6 T" q; m7 B9 ?% i    0.60725293503245   0.60725293501477   0.60725293501035   0.60725293500925 ...
    % E: h' }4 g+ T5 M    0.60725293500897   0.60725293500890   0.60725293500889   0.60725293500888 ];# v( r; k) c0 z; g
    Kn = Kvalues(min(n, length(Kvalues)));
    4 S8 m/ `( @5 d7 J 4 x+ K7 d3 W1 m% M, O: C8 S$ }
    % Initialize loop variables:& s. l- H/ o) O, k
    v = [1;0]; % start with 2-vector cosine and sine of zero
    # [5 c" x$ `% N  N) m/ Opoweroftwo = 1; + w2 q, K6 D' S, O) T
    % Iterations
    ' ]1 W. w9 t4 Z2 f7 bfor j = 1:n;7 e' T' ~: r% v
        if beta < 0! m" X% N& d9 x6 X+ `4 f
            sigma = -1;
    1 K5 X; z) y! h    else
    % [: j. e5 V' T        sigma = 1;$ |0 d5 s# ~/ B5 K% r# a4 R
        end
    ' `' C6 C8 Q9 S: q6 q    % update the angle from table, or eventually by just dividing by two
    1 i6 V4 G8 Y/ B4 u8 [    if j <= length(angles)- I/ i( n3 ~# k/ f8 z* O! b$ c
            angle = angles(j);+ m0 f6 f2 W! ~# R1 T5 m; H
        else7 B$ `# x0 P$ ^) R: u2 ]
            angle = angle/2;
    0 n, f: ?& A2 N# q    end: ^. j! k3 {. k6 j
        factor = sigma * poweroftwo;
    2 I" ~. ?$ Z- R; X    R = [1, -factor; factor, 1];" x3 q% a) u% h+ N, M# H8 t' s$ g/ h
        v = R * v; % 2-by-2 mtrix multiply5 u$ `' i7 b& Q# ]" S- e6 x4 U. E
        beta = beta - sigma * angle; % update the remaining angle
    - t! |8 b1 _' e& g! I3 @, _    poweroftwo = poweroftwo / 2;1 f2 @1 R$ Y6 ]; ?' p) V
    end4 @% U& x6 c* p9 f) `. S4 _9 a$ s
    % Adjust length of output vector to be [cos(beta), sin(beta)]:
    & I9 Q3 z& ]* {v = v * Kn;
    ( \# k4 j* H2 \! Treturn
    0 u& g% T7 k: u8 U, i+ i( X- ~+ V& Y3 s1 q: g- z4 l( w" ~3 e+ K, a
    使用20位寄存器,仿真波形如下:! v0 I1 o* [  O  |5 T4 n3 V, u* Z
    仿真波形 1 I1 [& y+ X* N% \. W

    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
    杨帆 实名认证       

    4

    主题

    4

    听众

    626

    积分

    升级  6.5%

  • TA的每日心情
    奋斗
    2012-12-4 13:38
  • 签到天数: 314 天

    [LV.8]以坛为家I

    新人进步奖 最具活力勋章 发帖功臣

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

    群组数学建模

    群组我们一定会赢

    回复

    使用道具 举报

    1

    主题

    3

    听众

    453

    积分

    升级  51%

  • TA的每日心情
    开心
    2015-7-7 09:53
  • 签到天数: 50 天

    [LV.5]常住居民I

    群组华南理工大学

    群组Matlab讨论组

    群组狂热数模爱好者

    群组数学建摸协会

    群组学术交流A

    回复

    使用道具 举报

    赛才        

    0

    主题

    2

    听众

    46

    积分

    升级  43.16%

    该用户从未签到

    回复

    使用道具 举报

    大笨象 实名认证       

    42

    主题

    11

    听众

    2119

    积分

    di_dar

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

    [LV.6]常住居民II

    自我介绍
    隐秘盛开

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

    群组Matlab讨论组

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

    群组数学建模

    群组SIMULINK

    群组LINGO

    zhangjichang 发表于 2011-6-8 22:31
    4 v) R8 m. W1 k$ K9 J5 r; N这是什么算法?第一次听说

    ) w$ ^& w5 f( z  K. |) t这个,就是那个。感兴趣的话你还是自己搜搜吧。
    我正在用金山快盘。http://www.kuaipan.cn/?channel=6ohsg7
    回复

    使用道具 举报

    大笨象 实名认证       

    42

    主题

    11

    听众

    2119

    积分

    di_dar

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

    [LV.6]常住居民II

    自我介绍
    隐秘盛开

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

    群组Matlab讨论组

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

    群组数学建模

    群组SIMULINK

    群组LINGO

    赛才 发表于 2011-6-9 15:01
    , P4 `3 k2 `0 w7 C5 H我表示很给力
    2 B4 l5 ~, O2 d2 Q& o& F4 w
    给力就好。呵呵
    我正在用金山快盘。http://www.kuaipan.cn/?channel=6ohsg7
    回复

    使用道具 举报

    1

    主题

    2

    听众

    48

    积分

    升级  45.26%

  • TA的每日心情

    2011-7-1 22:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    自我介绍
    最强的人往往是含泪奔跑的人!!!

    群组C 语言讨论组

    群组东北三省联盟

    群组数学专业考研加油站

    群组数学建模

    回复

    使用道具 举报

    yingzhen        

    1

    主题

    3

    听众

    297

    积分

    升级  98.5%

  • TA的每日心情

    2011-12-18 20:51
  • 签到天数: 30 天

    [LV.5]常住居民I

    回复

    使用道具 举报

    羅雲琦        

    5

    主题

    2

    听众

    603

    积分

    升级  0.75%

  • TA的每日心情
    开心
    2014-11-2 16:11
  • 签到天数: 237 天

    [LV.7]常住居民III

    自我介绍
    我是來自四川省合江縣的男孩,樂觀自信

    社区QQ达人

    群组科技写作基础培训

    群组2011年第一期数学建模

    群组第四届cumcm国赛实训

    群组学术交流A

    群组学术交流B

    回复

    使用道具 举报

    jt202010 实名认证    中国数模人才认证  会长俱乐部认证 

    109

    主题

    165

    听众

    1万

    积分

    升级  0%

  • TA的每日心情
    奋斗
    2025-10-24 08:45
  • 签到天数: 3586 天

    [LV.Master]伴坛终老

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

    群组数学建模

    群组自然数狂想曲

    群组2013年数学建模国赛备

    群组第三届数模基础实训

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

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-11-8 06:34 , Processed in 2.203547 second(s), 105 queries .

    回顶部