QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 15114|回复: 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 编辑 ; K6 l4 ~4 [* y" t

    ( Y: E) G+ B& N+ Q/ W不知道有木有人研究这个,比较偏向于硬件描述。0 k( o0 Z& k6 U+ M- ~+ I
    今天先发一个sine cose函数的实现。6 m; y7 x: S) L" j
    有兴趣的可以看一下,m文件见附件。
    . w" {4 Y$ U* p$ |& m1 nfunction v=f_cordic(beta,n)
    + s0 C+ ~1 N* ~: m2 F' d" Yif beta < -pi/2 || beta > pi/2
    " ~& U0 `" r( b* t( a    if beta < 0
    ' M  O' {9 G4 b) v% ~+ \        v=f_cordic(beta + pi,n);3 A5 b1 e" v  `: ?
        else  o  u+ t/ f/ h: _# a0 D
            v=f_cordic(beta - pi,n);& G0 v; K% @$ s* H  ?* ^5 \* q
        end" z" c: x" l8 R8 ~% s8 F& E
        v = -v;% flip the sign for second or third quadrant
    $ x1 s# E, W# c! a' H. R  n    return6 j- A9 N: v4 G4 g
    end  z+ k+ H  z& R, c# g/ R. j  R
    % Initialization of tables of constants used by CORDIC: I/ c5 B% Q2 ^7 E4 U
    % need a table of arctangents of negative powers of two, in radians:
    ' \- O: w7 z% t$ b) |5 E: f% angles = atan(2.^-(0:27));* b9 W" f$ F- j! U
    angles =  [  ...
    / w" I% B  Q7 M/ |- s4 Z    0.78539816339745   0.46364760900081   0.24497866312686   0.12435499454676 ...
    ) U, A8 F4 Y9 K0 t1 d    0.06241880999596   0.03123983343027   0.01562372862048   0.00781234106010 ...
    3 B* l5 q3 i, |3 \/ K    0.00390623013197   0.00195312251648   0.00097656218956   0.00048828121119 ...! p& F3 C4 G$ P/ _! L1 b
        0.00024414062015   0.00012207031189   0.00006103515617   0.00003051757812 ...
    / [$ w: f# e5 p5 U    0.00001525878906   0.00000762939453   0.00000381469727   0.00000190734863 ...
    * u& f) `5 @; L9 ?0 P    0.00000095367432   0.00000047683716   0.00000023841858   0.00000011920929 ...  ^' N) |. [5 ^! C$ e# f
        0.00000005960464   0.00000002980232   0.00000001490116   0.00000000745058 ];
    0 ^# M( O* U- X. t- m: `6 S: C% q% and a table of products of reciprocal lengths of vectors [1, 2^-j]:5 L8 a( M  b! d7 g( w* j
    Kvalues = [ ...7 A- l$ v$ S4 |/ T/ U
        0.70710678118655   0.63245553203368   0.61357199107790   0.60883391251775 .... N8 H; S" w4 z' [' w# l7 Q8 F" O
        0.60764825625617   0.60735177014130   0.60727764409353   0.60725911229889 ...
    . N$ [3 ?5 f2 a( g  w    0.60725447933256   0.60725332108988   0.60725303152913   0.60725295913894 ...
    : i5 C% P8 }" T    0.60725294104140   0.60725293651701   0.60725293538591   0.60725293510314 ...& {. I+ w0 ?+ ^) k0 f4 S! b! M$ ~& z% B
        0.60725293503245   0.60725293501477   0.60725293501035   0.60725293500925 ...
    " V0 U7 z2 `" {% ]' }9 m    0.60725293500897   0.60725293500890   0.60725293500889   0.60725293500888 ];
    0 X1 _! E/ w) f8 lKn = Kvalues(min(n, length(Kvalues)));
    ' M. {' [: |1 l4 u# {* j6 P* r
    8 G) [3 g# j" x% W9 V% Initialize loop variables:# e7 h% J2 L" L# Y6 R) t2 d
    v = [1;0]; % start with 2-vector cosine and sine of zero
      O# C$ a4 ]  _poweroftwo = 1; 2 D2 e7 ~/ q& }: j! ], K5 C
    % Iterations
    & B1 U8 j% \6 F' ~! `for j = 1:n;
    , u$ F. A& ]& c% H6 f4 u    if beta < 0' G0 _8 z5 l, {
            sigma = -1;# [* D5 H7 @3 A
        else5 N' @0 F; Y( H1 i4 G3 _
            sigma = 1;$ a8 |- e7 g* v+ e7 Q- ]
        end
    * q4 U. G9 {8 M" s# W- z    % update the angle from table, or eventually by just dividing by two% N$ H  \& ~" D3 [3 q: F1 d
        if j <= length(angles)
    # T+ g8 i: E0 m        angle = angles(j);# m5 c1 x: k; _; b7 }
        else
    : d! c* S4 G7 |9 T6 d) S9 K5 q" K        angle = angle/2;  k8 |2 l& |4 p; v1 q
        end
    1 j) T6 p" K3 e( K8 j$ F    factor = sigma * poweroftwo;
    5 C/ h4 d/ t. p1 t  g) N, `2 o    R = [1, -factor; factor, 1];* @1 k" d" R! [6 k
        v = R * v; % 2-by-2 mtrix multiply
    & z' j1 l, M; _" a    beta = beta - sigma * angle; % update the remaining angle
    " l: s: X8 n. A    poweroftwo = poweroftwo / 2;+ T& u5 V6 R' ?+ s$ f' A# t0 [4 w; g
    end: G6 t4 Y4 z6 u0 g1 Y
    % Adjust length of output vector to be [cos(beta), sin(beta)]:
    : K2 H/ ^( Y0 W. ~( Wv = v * Kn;
    1 q4 J0 i5 ^# a, Creturn
    0 s$ f) V& u* k, Z' m0 ^
    ! _  R; d* N( v使用20位寄存器,仿真波形如下:
    2 [) o: N' O9 W0 h5 o) { 仿真波形 1 n& P, B' _6 [' d  P( z1 m4 {* F& x

    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 q  n9 d, K% E6 t1 p. Z; l* r8 Y
    这是什么算法?第一次听说
    . i8 T  W1 `" ]) j9 s
    这个,就是那个。感兴趣的话你还是自己搜搜吧。
    我正在用金山快盘。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
    # U* f: E$ u# A  X. F我表示很给力

    : `2 ]& N! n7 r给力就好。呵呵
    我正在用金山快盘。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的每日心情
    奋斗
    2026-6-12 19:08
  • 签到天数: 3611 天

    [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-6-14 07:59 , Processed in 0.680197 second(s), 106 queries .

    回顶部