QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 14954|回复: 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 编辑
    * x+ S! V8 T+ M, |
    " \8 x5 ?  x: @3 C' _) Z/ O不知道有木有人研究这个,比较偏向于硬件描述。
    0 F7 c/ f7 m+ ]; _+ e今天先发一个sine cose函数的实现。
    4 }- a$ x3 @  d6 h有兴趣的可以看一下,m文件见附件。4 o- c1 o8 F, O7 _
    function v=f_cordic(beta,n)7 x" @3 \( _3 Z: t5 F+ Y
    if beta < -pi/2 || beta > pi/2
    3 a+ x- l: X& r5 J7 a4 A- B8 s    if beta < 0
    . M6 N- E) E8 {        v=f_cordic(beta + pi,n);  c, X. i, M- }# G: P6 v" J
        else2 L' z6 r( t5 q! _
            v=f_cordic(beta - pi,n);
    ) _" `; O% ~& |0 @  V: f& S    end' ^0 |8 w7 [0 n5 s+ N: T
        v = -v;% flip the sign for second or third quadrant0 _7 C  I6 w0 c$ s% R
        return
    : h9 ^  B* p0 ^  A, Dend
    4 O- X* }; u2 Y: z! ~- ]" M. o% Initialization of tables of constants used by CORDIC; m9 I- I! @8 S6 j
    % need a table of arctangents of negative powers of two, in radians:
    2 X- ^9 j; o% L& ^9 \3 K% angles = atan(2.^-(0:27));
    % f1 t" x* C! d5 v$ |angles =  [  ...
    ! w7 ?5 r4 v$ Z5 [( J- G, K    0.78539816339745   0.46364760900081   0.24497866312686   0.12435499454676 .... K! R. U* ~& u6 k' o" O. I( Q: N/ m
        0.06241880999596   0.03123983343027   0.01562372862048   0.00781234106010 ...
    4 \: m  C! @2 a( T! a: p1 D    0.00390623013197   0.00195312251648   0.00097656218956   0.00048828121119 ...2 l) K3 x. [4 v( v9 U3 Q
        0.00024414062015   0.00012207031189   0.00006103515617   0.00003051757812 ...
    " y) V# V% D+ t, y' f2 K& x    0.00001525878906   0.00000762939453   0.00000381469727   0.00000190734863 ...
    ( L; j) J3 i) z$ F7 [    0.00000095367432   0.00000047683716   0.00000023841858   0.00000011920929 ...
    % |9 `5 H. z4 Z# ?    0.00000005960464   0.00000002980232   0.00000001490116   0.00000000745058 ];
    . V. T* h3 r1 L% and a table of products of reciprocal lengths of vectors [1, 2^-j]:/ Y+ |8 i) M+ Z
    Kvalues = [ ...
    " D' j& f( l9 L    0.70710678118655   0.63245553203368   0.61357199107790   0.60883391251775 ...
    " p$ p4 g% B. q4 E    0.60764825625617   0.60735177014130   0.60727764409353   0.60725911229889 ..., {4 y$ Z9 j8 q: L0 s1 x" D
        0.60725447933256   0.60725332108988   0.60725303152913   0.60725295913894 .... |! ?& M% w' M2 p5 e8 \( t8 H3 \
        0.60725294104140   0.60725293651701   0.60725293538591   0.60725293510314 ...! n3 |! m( \/ ?  _9 R: i- v
        0.60725293503245   0.60725293501477   0.60725293501035   0.60725293500925 ...0 j, Q6 V, V% F, h
        0.60725293500897   0.60725293500890   0.60725293500889   0.60725293500888 ];
    * u  F. b: K$ Q) e0 C. l! @5 qKn = Kvalues(min(n, length(Kvalues)));0 S2 \. S& P0 l2 \- x( J

    8 R3 G, B; A: l* }3 c% Initialize loop variables:
    0 B/ d, U; X/ I! j# n) P" D/ Tv = [1;0]; % start with 2-vector cosine and sine of zero
    ' q* z$ o7 ~* g# i1 _  Ipoweroftwo = 1;
    , y7 `8 W" V' D) x+ c% Iterations( m/ {5 z/ `- \9 _7 m
    for j = 1:n;- g3 M" |8 @  `6 o
        if beta < 0
    7 R! U; Z5 e. Q; E        sigma = -1;
    * T' L8 H& f6 J# `3 X    else
    5 E! J$ r9 t/ o- W/ n7 H        sigma = 1;
    2 c0 m1 N! ]$ y- ~- z7 A7 @0 p    end6 z! N2 [: d0 ]. R
        % update the angle from table, or eventually by just dividing by two
    % P+ I6 O. k- T  R2 a! W    if j <= length(angles)+ K' h6 X# G( d! C9 y
            angle = angles(j);
    - h1 C3 Z/ \3 r6 {  I    else
    ; g7 ?  b9 ~. @$ J( k* ?" R: x5 W        angle = angle/2;
    1 _: Z/ n* X) w4 e3 O$ z/ G    end( `" u) i2 o5 ]! W9 ^, O' D
        factor = sigma * poweroftwo;
    ; A+ z% m+ T4 I    R = [1, -factor; factor, 1];
    0 W# g' _5 L4 k" i% [- x6 Y" L" {5 l    v = R * v; % 2-by-2 mtrix multiply; o  H$ l+ j3 q8 P) K! E4 P* u  j8 h
        beta = beta - sigma * angle; % update the remaining angle
    7 [/ @2 I8 D% a: t' d$ l0 J/ ^    poweroftwo = poweroftwo / 2;: ?6 V2 K+ ?5 n/ R; X
    end: T( ?, c  \( H: o; Q
    % Adjust length of output vector to be [cos(beta), sin(beta)]:, U' I. V- `/ Y& F( W  g5 U
    v = v * Kn;+ \& T) c# g% f" X0 o
    return- ~8 U3 ^1 Q  Q# w
    , r! M1 ~6 x( o$ K
    使用20位寄存器,仿真波形如下:
    7 W1 z8 k. @+ } 仿真波形
    + P( D' F  Z' ?' ^' }9 o9 {

    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 `* m1 w2 \* S! K& C4 p" T% c
    这是什么算法?第一次听说

    1 }3 ~& X: ?% z0 G这个,就是那个。感兴趣的话你还是自己搜搜吧。
    我正在用金山快盘。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
    / ^* y- ]. `: h3 q' i/ d; C4 V我表示很给力

    6 a& o! b; g; Z, W. j给力就好。呵呵
    我正在用金山快盘。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-10 07:23 , Processed in 0.956025 second(s), 105 queries .

    回顶部