Основанное на 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(theta
,r
)r
* e^ (j*theta
) использование приближения алгоритма CORDIC.
выполняет [x,y]
= cordicpol2cart(theta
,r
,niters
)niters
итерации алгоритма.
масштабирует выход в зависимости от булева значения [x,y]
= cordicpol2cart(theta
,r
,Name,Value
)b
.
задает и количество итераций и [x,y]
= cordicpol2cart(theta
,r
,niters
,Name,Value
)Name,Value
пара для того, масштабировать ли выход.
|
|
|
|
|
|
Дополнительные разделенные запятой пары Name,Value
аргументы, где Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в одинарных кавычках (''
).
|
Значение по умолчанию: tRUE |
|
Когда вход Когда вход |
Запустите следующий код и оцените точность основанного на CORDIC Полярного-к-декартову преобразования.
wrdLn = 16; theta = fi(pi/3, 1, wrdLn); u = fi( 2.0, 1, wrdLn); fprintf('\n\nNITERS\tX\t\t ERROR\t LSBs\t\tY\t\t ERROR\t LSBs\n'); fprintf('------\t-------\t ------\t ----\t\t-------\t ------\t ----\n'); for niters = 1:(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 |