CORDIC原理与FPGA实现(2)
2013-10-25 11:38
513 查看
CORDIC算法实现极坐标(polar)到直角坐标系(Cartesian)的变换。
function[horizonal,vertical]=polar2car(mag,pha);
[code]x=mag;
y=0;
z=pha;
d=0;
i=0;
k=0.6073;%K增益
x=k*x;
whilei<50
ifz<0d=-1;
elsed=1;
end
xNew=x-y*d*(2^(-i));
y=y+x*d*(2^(-i));
z=z-d*atan(1/2^(i));
i=i+1;
x=xNew;
end
horizonal=x;
vertical=y;
[/code]
CORDIC算法实现直角坐标到极坐标系的变换。
[code]function[mag,pha]=car2polar(x,y);
%y=0;
%将直角坐标系中的点(x,y)旋转到x轴,旋转的角度即为其极坐标的相位,在x轴的长度等于极坐标的幅度
d=0;%可用于求相位,幅度
i=0;
z=0;
k=0.6073;%K增益
whilei<50
ify<0d=1;
elsed=-1;
end
xNew=x-y*d*(2^(-i));
y=y+x*d*(2^(-i));
z=z-d*atan(1/2^(i));
i=i+1;
x=xNew;
end
x=x*k;
mag=x;
pha=z;
[/code]
验证:
[a,b]=polar2car(1,pi/3)
a=
0.5000
b=
0.8661
[a,b]=car2polar(0.5000,0.8661)
a=
1.0001
b=
1.0472
计算正切值atan只需将直角坐标变换为极坐标的程序中取出最后的角度值,即可得到反正切值。
function[pha]=cordic_arcsin(c);
[code]
%y=0;
%将点(1,0)旋转至其纵坐标=c,旋转的角度为角度求反余弦也是同样道理
d=0;
i=0;
z=0;
x=1;
y=0;
k=0.6073;%K增益
xNew=x*k;
whilei<100
ify<=cd=1;
elsed=-1;
end
x=xNew-y*d*(2^(-i));
y=y+xNew*d*(2^(-i));
z=z+d*atan(1/2^(i));
i=i+1;
xNew=x;
end
%mag=x;
pha=z;
[/code]
function[pha]=cordic_arccos(c);
[code]
%y=0;
d=0;
i=0;
z=0;
x=1;
y=0;
k=0.6073;%K增益
xNew=x*k;
whilei<100
ifx>=cd=1;
elsed=-1;
end
x=xNew-y*d*(2^(-i));
y=y+xNew*d*(2^(-i));
z=z+d*atan(1/2^(i));
i=i+1;
xNew=x;
end
%mag=x;
pha=z;
[/code]
function[pha]=cordic_arctan(x,y);
[code]
%y=0;
%将点(x,y)旋转到x轴所需要的角度
d=0;
i=0;
z=0;
k=0.6073;%K增益
x=x*k;
whilei<50
ify<0d=1;
elsed=-1;
end
xNew=x-y*d*(2^(-i));
y=y+x*d*(2^(-i));
z=z-d*atan(1/2^(i));
i=i+1;
x=xNew;
end
%mag=x;
pha=z;
[/code]
function[sine,cosine]=cordic_sine(angle);
[code]%Initialitation
%%angle=30;
x=1;
y=0;
z=angle;
d=1;
i=0;%Iterativefactor
k=0.6073;%KFactor
xNew=k*x;
whilei<50
ifz<=0d=-1;
elsed=1;
end
x=xNew-d*y*2^(-i);
y=y+d*xNew*2^(-i);
z=z-d*atan(2^(-i));
i=i+1;
xNew=x;
end
cosine=x
sine=y
[/code]
相关文章推荐
- 随笔--- 系统时钟与硬件时钟
- spring mvc教程
- centos 6.3 msyql安装配置
- 在SQL查询分析器中执行对SYSOBJECTS 操作的语句时提示:未启用对系统目录的特殊更新等信息
- 再论逻辑地址、线性地址
- 逻辑地址、线性地址、物理地址、虚拟内存
- WWDC2013_218 内容概要 ( 1 )
- 【Javascript】$(function(){})和$(document).ready(function(){}) 疑惑!
- 黑马程序员_源自梦想 java基础知识注意点
- velocity 教程
- Javascript基础 函数“重载”
- appears more than once in the keychain. The codesign tool requires there onl
- "".indexOf("*")?" * ":" "
- 【转】有效修改max open files/ulimit -n
- autofac
- 研究生计划 四
- Android Studio使用手记
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- iOS开发中那些高效常用的宏
- JS字符处理