cordicpol2cart
CORDIC-based approximation of polar-to-Cartesian conversion
Syntax
[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)
Description
returns
the Cartesian xy coordinates of [x,y]
= cordicpol2cart(theta
,r
)r
* e^(j*theta
)
using a CORDIC algorithm approximation.
performs [x,y]
= cordicpol2cart(theta
,r
,niters
)niters
iterations
of the algorithm.
scales
the output depending on the Boolean value of [x,y]
= cordicpol2cart(theta
,r
,Name,Value
)b
.
specifies
both the number of iterations and [x,y]
= cordicpol2cart(theta
,r
,niters
,Name,Value
)Name,Value
pair
for whether to scale the output.
Input Arguments
|
|
|
|
|
|
|
Default: true |
Output Arguments
|
When the input When the input |
Examples
Run the following code, and evaluate the accuracy of the CORDIC-based Polar-to-Cartesian conversion.
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 |
More About
More About
Algorithms
Extended Capabilities
Version History
Introduced in R2011a