cordicpol2cart
基于cordic的极坐标到笛卡尔的近似转换
语法
[x,y] = cordicpol2cart(theta,r)
[x,y] = cordicpol2cart(theta,r,niters)
[x,y] = cordicpol2cart(theta,r,Name,Value)
[x,y] = cordicpol2cart(theta,r,niters,Name,Value)
描述
的笛卡尔xy坐标(x, y)
= cordicpol2cart (θ
,r
)r
* e ^ (j *θ
)使用CORDIC算法逼近。
执行(x, y)
= cordicpol2cart (θ
,r
,硝酸钠
)硝酸钠
算法的迭代。
的布尔值来缩放输出(x, y)
= cordicpol2cart (θ
,r
,名称,值
)b
.
指定迭代次数和(x, y)
= cordicpol2cart (θ
,r
,硝酸钠
,名称,值
)名称,值
Pair用于是否缩放输出。
输入参数
|
|
|
|
|
|
名称-值参数
的可选逗号分隔对名称,值
参数,的名字
参数名称和价值
对应的值。的名字
必须出现在单引号内(''
).
|
默认值:真正的 |
输出参数
|
当输入 当输入 |
例子
运行以下代码,并评估基于cordic的极坐标到笛卡尔坐标转换的准确性。
wrdLn = 16;theta = fi(pi/ 3,1, wrdLn);u = fi(2.0, 1, wrdLn);fprintf('\n\nNITERS\tX\t\t ERROR\t lbs \t\tY\t ERROR\t lbs \n');流(' - \ t - \ t - \ t - \ \ t——\ t——\ \ n”);(wrdLn - 1) [x_ref, y_ref] = pol2cart(double(theta),double(u));[x_fi, y_fi] = cordicpol2cart(theta, u, niters);X_dbl = double(x_fi);Y_dbl = double(y_fi);X_err = abs(x_dbl - x_ref); y_err = abs(y_dbl - y_ref); fprintf('%d\t%1.4f\t %1.4f\t %1.1f\t\t%1.4f\t %1.4f\t %1.1f\n',... niters,x_dbl,x_err,(x_err * pow2(x_fi.FractionLength)),... y_dbl,y_err,(y_err * pow2(y_fi.FractionLength))); end fprintf('\n'); NITERS X ERROR LSBs Y ERROR LSBs ------ ------- ------ ---- ------- ------ ---- 1 1.4142 0.4142 3392.8 1.4142 0.3178 2603.8 2 0.6324 0.3676 3011.2 1.8973 0.1653 1354.2 3 1.0737 0.0737 603.8 1.6873 0.0448 366.8 4 0.8561 0.1440 1179.2 1.8074 0.0753 617.2 5 0.9672 0.0329 269.2 1.7505 0.0185 151.2 6 1.0214 0.0213 174.8 1.7195 0.0126 102.8 7 0.9944 0.0056 46.2 1.7351 0.0031 25.2 8 1.0079 0.0079 64.8 1.7274 0.0046 37.8 9 1.0011 0.0011 8.8 1.7313 0.0007 5.8 10 0.9978 0.0022 18.2 1.7333 0.0012 10.2 11 0.9994 0.0006 5.2 1.7323 0.0003 2.2 12 1.0002 0.0002 1.8 1.7318 0.0002 1.8 13 0.9999 0.0002 1.2 1.7321 0.0000 0.2 14 0.9996 0.0004 3.2 1.7321 0.0000 0.2 15 0.9998 0.0003 2.2 1.7321 0.0000 0.2 |
更多关于
更多关于
算法
扩展功能
版本历史
在R2011a中引入