Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

cordiccart2pol

CORDIC ベースの近似を使用して直交座標を極座標に変換する

説明

[theta,rho] = cordiccart2pol(x,y) は、CORDIC アルゴリズムの近似を使用して、直交座標 x および y に格納されているデータの対応する要素を極座標 theta および rho に変換します。

[theta,rho] = cordiccart2pol(x,y,niters) では、CORDIC アルゴリズムの反復が niters 回実行されます。

[theta,rho] = cordiccart2pol(___,'ScaleOutput',b) は、逆 CORDIC ゲイン値によって出力 rho をスケーリングするかどうかを指定します。

すべて折りたたむ

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

入力引数

すべて折りたたむ

直交座標。スカラー、ベクトル、行列または多次元配列として指定します。xy は同じサイズでなければなりません。サイズが異なる場合は、少なくともいずれか一方の値がスカラーでなければなりません。xy は同じデータ型をもたなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

CORDIC アルゴリズムを実行する反復回数。正の整数値スカラーとして指定します。反復数を増やすと、結果の精度が高まりますが、計算量も増加しレイテンシも増えます。

niters を指定しない場合や指定した値が大きすぎた場合は、アルゴリズムでは入力のデータ型に基づく最大値が使用されます。

  • 固定小数点入力 — 反復の最大回数は rho の語長、または theta の語長から 1 を引いた数のうち、小さいほうになります。

  • 浮動小数点入力 — 最大値は、double の場合は 52single の場合は 23 です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

逆 CORDIC ゲイン値によって出力 rho をスケーリングするかどうか。次の値のいずれかとして指定します。

  • 1 — 出力値に定数を乗算します。これにより、追加の計算が発生します。

  • 0 — 出力をスケーリングしません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

出力引数

すべて折りたたむ

角度座標。配列として返されます。theta は、x-y 平面内における正の x 軸を始線とした反時計回りの角度 (ラジアン単位) です。角度の値は範囲 [-pi pi] 内です。

x および y が浮動小数点の場合、thetax および y と同じデータ型になります。それ以外の場合、theta は固定小数点データ型となり、語長は x および y と同じで、小数部の長さは範囲 [-pi pi] で最高精度となります。

動径座標。配列として返されます。rho は、x-y 平面上における原点から特定の点までの距離です。

rho は、極座標の半径の大きさの値を返します。rho は実数値であり、スカラーにすることも、theta と同じ次元にすることもできます。

入力 x,y が固定小数点値の場合、rho は 2 進小数点スケーリングを使用した符号付き固定小数点値になります。入力 x,y が符号付きの場合、rho の語長は入力の語長 +2 となります。入力が符号なしの場合、rho の語長は入力の語長 +3 となります。rho の小数部の長さは、常に x,y 入力の小数部の長さと同じになります。

詳細

すべて折りたたむ

CORDIC

CORDIC は、COordinate Rotation DIgital Computer の略語です。ギブンス回転に基づく CORDIC アルゴリズムは、Shift-Add 反復演算のみを必要とするため、ハードウェア効率が最も優れたアルゴリズムの 1 つです (参考文献を参照)。CORDIC アルゴリズムは、明示的な乗数を必要としません。CORDIC を使用すると、正弦関数、余弦関数、逆正弦関数、逆余弦関数、逆正接関数、ベクトル振幅関数などのさまざまな関数を計算できます。また、このアルゴリズムは除算、平方根、双曲線、対数などの関数にも使用できます。

CORDIC の反復数を増やすと、結果の精度が高まりますが、それにより計算量が増加しレイテンシが増えます。

アルゴリズム

すべて折りたたむ

信号の流れ図

CORDIC ベクトル モード カーネル

CORDIC カーネルの精度は X、Y および Z の初期値の選択に依存します。このアルゴリズムは以下の初期値を使用します。

x0 is initialized to the x input valuey0 is initialized to the y input valuez0 is initialized to 0

fimath の伝播ルール

CORDIC 関数は、入力に追加されたすべてのローカル fimath を破棄します。

CORDIC 関数は、計算の実行時に独自の内部 fimath を使用します。

  • OverflowActionWrap

  • RoundingMethodFloor

出力には fimath が追加されていません。

拡張機能

バージョン履歴

R2011b で導入