このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
cordiccart2pol
CORDIC ベースの近似を使用して直交座標を極座標に変換する
構文
説明
例
直交座標から極座標への変換
CORDIC アルゴリズムの近似を使用して、固定小数点および浮動小数点の直交座標を極座標に変換します。結果を MATLAB® 関数 cart2pol
と比較します。
[theta_c2p_flt,rho_c2p_flt] = cordiccart2pol(-0.5,0.5) [theta_c2p_fxp,rho_c2p_fxp] = cordiccart2pol(fi(-0.5,1,16,15),fi(0.5,1,16,15)) [theta_mlb_flt,rho_mlb_flt] = cart2pol(-0.5,0.5)
theta_c2p_flt = 2.3562 rho_c2p_flt = 0.7071 theta_c2p_fxp = 2.3562 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 rho_c2p_fxp = 0.7071 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 18 FractionLength: 15 theta_mlb_flt = 2.3562 rho_mlb_flt = 0.7071
配列の直交座標から極座標への変換
CORDIC アルゴリズムの近似を使用して、固定小数点の直交座標の配列を極座標に変換します。
[theta_pos,rho] = cordiccart2pol(fi([0.75:-0.25:-1.0],1,16,15),fi(0.5,1,16,15)) [theta_neg,rho] = cordiccart2pol(fi([0.75:-0.25:-1.0],1,16,15),fi(-0.5,1,16,15))
theta_pos = 0.5881 0.7854 1.1072 1.5708 2.0344 2.3562 2.5535 2.6780 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 rho = 0.9014 0.7071 0.5591 0.5000 0.5591 0.7071 0.9014 1.1180 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 18 FractionLength: 15 theta_neg = -0.5881 -0.7854 -1.1072 -1.5708 -2.0344 -2.3562 -2.5535 -2.6780 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 rho = 0.9014 0.7071 0.5591 0.5000 0.5591 0.7071 0.9014 1.1180 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 18 FractionLength: 15
入力引数
x,y
— 直交座標
スカラー | ベクトル | 行列 | 多次元配列
直交座標。スカラー、ベクトル、行列または多次元配列として指定します。x
と y
は同じサイズでなければなりません。サイズが異なる場合は、少なくともいずれか一方の値がスカラーでなければなりません。x
と y
は同じデータ型をもたなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
niters
— CORDIC アルゴリズムの反復回数
正の整数値のスカラー
CORDIC アルゴリズムを実行する反復回数。正の整数値スカラーとして指定します。反復数を増やすと、結果の精度が高まりますが、計算量も増加しレイテンシも増えます。
niters
を指定しない場合や指定した値が大きすぎた場合は、アルゴリズムでは入力のデータ型に基づく最大値が使用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
b
— 逆 CORDIC ゲイン値によって出力 rho
をスケーリングするかどうか
1
(既定値) | 0
逆 CORDIC ゲイン値によって出力 rho
をスケーリングするかどうか。次の値のいずれかとして指定します。
1
— 出力値に定数を乗算します。これにより、追加の計算が発生します。0
— 出力をスケーリングしません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| fi
出力引数
theta
— 角度座標
配列
角度座標。配列として返されます。theta
は、x-y 平面内における正の x 軸を始線とした反時計回りの角度 (ラジアン単位) です。角度の値は範囲 [-pi pi]
内です。
x
および y
が浮動小数点の場合、theta
は x
および y
と同じデータ型になります。それ以外の場合、theta
は固定小数点データ型となり、語長は x
および y
と同じで、小数部の長さは範囲 [-pi pi]
で最高精度となります。
rho
— 動径座標
配列
詳細
CORDIC
CORDIC は、COordinate Rotation DIgital Computer の略語です。ギブンス回転に基づく CORDIC アルゴリズムは、Shift-Add 反復演算のみを必要とするため、ハードウェア効率が最も優れたアルゴリズムの 1 つです (参考文献を参照)。CORDIC アルゴリズムは、明示的な乗数を必要としません。CORDIC を使用すると、正弦関数、余弦関数、逆正弦関数、逆余弦関数、逆正接関数、ベクトル振幅関数などのさまざまな関数を計算できます。また、このアルゴリズムは除算、平方根、双曲線、対数などの関数にも使用できます。
CORDIC の反復数を増やすと、結果の精度が高まりますが、それにより計算量が増加しレイテンシが増えます。
アルゴリズム
信号の流れ図
CORDIC カーネルの精度は X、Y および Z の初期値の選択に依存します。このアルゴリズムは以下の初期値を使用します。
fimath の伝播ルール
CORDIC 関数は、入力に追加されたすべてのローカル fimath
を破棄します。
CORDIC 関数は、計算の実行時に独自の内部 fimath
を使用します。
OverflowAction
—Wrap
RoundingMethod
—Floor
出力には fimath
が追加されていません。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用に関するメモと制限:
可変サイズ信号はサポートされていません。
CORDIC アルゴリズムによって実行される反復の回数
niters
は、定数でなければなりません。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
関数 cordiccart2pol
は、MATLAB からの SystemC™ コード生成もサポートしています。
バージョン履歴
R2011b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)