QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 14943|回复: 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 编辑
    * A2 w/ B! R6 b& n4 L; E( p* z0 ]" O. G1 ?  Q" M
    不知道有木有人研究这个,比较偏向于硬件描述。0 W1 W  e+ i/ u2 X% P
    今天先发一个sine cose函数的实现。
    , S4 `3 `: b6 t9 x: \" M有兴趣的可以看一下,m文件见附件。; [! Q) Y7 p5 d8 X0 G5 S
    function v=f_cordic(beta,n)0 t5 k' s8 y& J! A& `
    if beta < -pi/2 || beta > pi/2
    5 A9 m& [" i( i, m( b: v- W    if beta < 02 U* A: j+ p% `  m% I6 B. a
            v=f_cordic(beta + pi,n);
    , e9 y) q( s) p8 H- O0 i1 Y    else8 c( [/ E* p+ C* H% e# Y. v+ H6 n
            v=f_cordic(beta - pi,n);3 }, l/ R1 d6 Y. i3 H4 G6 x
        end, H7 k. M* ^; g5 @
        v = -v;% flip the sign for second or third quadrant% M, b7 X% _! K3 n8 ~* }- C
        return
      x! z( i; s8 `9 Y3 oend( X4 ^0 u# {4 r; H2 m1 n
    % Initialization of tables of constants used by CORDIC
    : _/ H' y  R- l0 ^6 x% need a table of arctangents of negative powers of two, in radians:+ x' c+ }3 {) A7 b, D- s8 o9 ~1 A
    % angles = atan(2.^-(0:27));# ?; z- c5 c2 {
    angles =  [  ...
    4 _: e- u$ H; t9 ~0 {    0.78539816339745   0.46364760900081   0.24497866312686   0.12435499454676 ...; w& ?0 c% Q% b8 X
        0.06241880999596   0.03123983343027   0.01562372862048   0.00781234106010 ..., c$ A6 Z$ v) r. Z& i% }8 w
        0.00390623013197   0.00195312251648   0.00097656218956   0.00048828121119 ...
    5 B8 {6 e! l5 z    0.00024414062015   0.00012207031189   0.00006103515617   0.00003051757812 ...) {3 U8 z1 z& _. e
        0.00001525878906   0.00000762939453   0.00000381469727   0.00000190734863 ...
    6 {  l: @* y& v5 r    0.00000095367432   0.00000047683716   0.00000023841858   0.00000011920929 ...
    , ?3 A: }$ D1 u. j! Z- B! \: h* I    0.00000005960464   0.00000002980232   0.00000001490116   0.00000000745058 ];/ v. n* Z- w8 B# {  |
    % and a table of products of reciprocal lengths of vectors [1, 2^-j]:
      j& b' X) S9 h9 NKvalues = [ ...
    ( J- \" B* j6 K; m. d$ j    0.70710678118655   0.63245553203368   0.61357199107790   0.60883391251775 ...
    6 z6 \6 U/ j3 d& U    0.60764825625617   0.60735177014130   0.60727764409353   0.60725911229889 ...5 T' a+ S# h  k+ N* q& r
        0.60725447933256   0.60725332108988   0.60725303152913   0.60725295913894 ...
    2 v  U+ z7 s5 C8 K6 w4 f- A& }- e    0.60725294104140   0.60725293651701   0.60725293538591   0.60725293510314 .../ {. d2 V* {2 w% X
        0.60725293503245   0.60725293501477   0.60725293501035   0.60725293500925 ...
    1 T+ }/ ?; e9 K) z0 }( Y" Z& j    0.60725293500897   0.60725293500890   0.60725293500889   0.60725293500888 ];" [3 ^6 t9 T% t3 C# p2 L9 Y
    Kn = Kvalues(min(n, length(Kvalues)));
    # O# m# g* r" U2 ]) S8 N9 J
    1 L% \$ e1 J0 e. `% @7 N6 r1 l! s% Initialize loop variables:0 W5 ]4 z5 I7 G
    v = [1;0]; % start with 2-vector cosine and sine of zero1 M% l3 G6 l9 ]$ A3 Q
    poweroftwo = 1;
    % k; B2 q% U8 @% Iterations
    ) A/ k( I) \$ M( T( Qfor j = 1:n;
    0 g$ {! y+ B( y# A6 l$ ^, Y    if beta < 0  T! x( e- }9 b" I$ k
            sigma = -1;
    , P* U) ?& ?& r, C2 D    else; P! t; b. j6 k2 D( j/ T# C
            sigma = 1;# q3 w4 h+ [) a7 R& p6 z
        end
    ) h' `' w. Y0 P# k+ v! Q8 e    % update the angle from table, or eventually by just dividing by two, O+ ~8 A+ |# D, _
        if j <= length(angles). s/ s. s- w0 g/ U- `) c( f
            angle = angles(j);3 M7 @+ v" g5 w5 O  g; c
        else
    1 u" L4 g2 B/ l& u8 m        angle = angle/2;
    ! l: t- j/ p/ A& [    end) {  ]. q% J7 S& W
        factor = sigma * poweroftwo;* f3 T; h& `# V4 e1 Z0 U
        R = [1, -factor; factor, 1];8 g6 U* G- y/ M  p
        v = R * v; % 2-by-2 mtrix multiply- x2 F4 Y2 V* p0 \) z  B
        beta = beta - sigma * angle; % update the remaining angle% A! `; B' w5 o
        poweroftwo = poweroftwo / 2;
    ' I# D7 [- N9 P0 X. E1 \: \& E" vend
    , Z0 m  o- L) a4 z7 G6 s1 z, W# L% Adjust length of output vector to be [cos(beta), sin(beta)]:' G. g1 u5 _: l5 X  L- x: \
    v = v * Kn;
    8 `# M: z( N( T2 X- jreturn
    3 h. E: K* }, w7 D; n  [/ S2 u
    % |! |2 i  N1 h使用20位寄存器,仿真波形如下:
    9 D8 M6 f6 f% G8 v& X' Y2 p 仿真波形 # x# }0 ?6 e1 b3 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 9 [2 d% `( q1 f- w$ N
    这是什么算法?第一次听说
    8 N) i; P; F6 ?! ?4 M# O/ |! ~, V
    这个,就是那个。感兴趣的话你还是自己搜搜吧。
    我正在用金山快盘。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 : h/ N; O3 Y6 p8 ?% f
    我表示很给力

    ) y) B5 g% I4 m2 {给力就好。呵呵
    我正在用金山快盘。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-12-13 17:58
  • 签到天数: 3589 天

    [LV.Master]伴坛终老

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

    群组数学建模

    群组自然数狂想曲

    群组2013年数学建模国赛备

    群组第三届数模基础实训

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

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-9 18:55 , Processed in 1.064870 second(s), 105 queries .

    回顶部