Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

cordiccart2pol

直交座標から極座標への変換の CORDIC ベースの近似

構文

[theta,r] = cordiccart2pol(x,y)
[theta,r] = cordiccart2pol(x,y, niters)
[theta,r] = cordiccart2pol(x,y, niters,'ScaleOutput',b)
[theta,r] = cordiccart2pol(x,y, 'ScaleOutput',b)

説明

[theta,r] = cordiccart2pol(x,y) は、CORDIC アルゴリズム近似を使用して、直交座標の x および y から極座標の角度 theta および半径 r を返します。

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

[theta,r] = cordiccart2pol(x,y, niters,'ScaleOutput',b) では、反復の回数、および b のブール値に基づいて r 出力を逆 CORDIC ゲインの値でスケールするかどうかの 2 つを指定します。

[theta,r] = cordiccart2pol(x,y, 'ScaleOutput',b) は、b のブール値に基づいて r 出力を逆 CORDIC ゲインの値でスケールします。

入力引数

x,y

x,y は直交座標です。x および y は同じサイズでなければなりません。サイズが異なる場合は、少なくともいずれか一方の値がスカラー値でなければなりません。x および y は同じデータ型をもたなければなりません。

niters

niters は、CORDIC アルゴリズムによって実行される反復の回数です。この引数はオプションです。指定する場合、niters は正の整数で、スカラーでなければなりません。niters を指定しない場合や指定した値が大きすぎた場合は、アルゴリズムでは最大値が使用されます。固定小数点の演算では、反復の最大回数は r の語長または theta の語長から 1 を引いた数のうち、小さいほうになります。浮動小数点の演算では、最大値は double で 52、single で 23 です。反復数を増やすと、結果の精度が高まりますが、計算量も増加しレイテンシも増えます。

名前と値のペアの引数

オプションのコンマ区切りの Name,Value の引数ペア。ここで、Name は引数名で、Value は対応する値です。Name は一重引用符 ('') で囲まなければなりません。

ScaleOutput

ScaleOutput は、逆 CORDIC ゲイン係数によって出力をスケールするかどうかを指定するブール値です。この引数はオプションです。ScaleOutputtrue または 1 に設定すると、出力値は定数で乗算され、余分な計算が必要になります。ScaleOutputfalse または 0 に設定した場合は、出力はスケールされません。

既定値: true

出力引数

theta

theta は、極座標の位相角の値を含みます。値の範囲は -pi から pi ラジアンです。x および y が浮動小数点の場合、thetaxy と同じデータ型になります。それ以外の場合、theta は固定小数点データ型となり、語長は x および y と同じで、小数部の長さは -pi から pi の値に対して最高精度になります。

r

r は、極座標の半径の大きさの値を含みます。r は実数値で、スカラー値または theta と同じ次元をもつことが可能です。入力 x,y が固定小数点値の場合、r も固定小数点値となります (常に符号付きで、2 進小数点スケーリングを伴います)。x,y の入力値は両方とも、同じデータ型をもたなければなりません。入力が符号付きの場合、r の語長は入力の語長 + 2 となります。入力が符号なしの場合、r の語長は入力の語長 + 3 となります。r の小数部の長さは、常に x,y 入力の小数部の長さと同じになります。

固定小数点の直交座標から極座標への変換。

[thPos,r]=cordiccart2pol(sfi([0.75:-0.25:-1.0],16,15),sfi(0.5,16,15))

thPos =

    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

r =

    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

[thNeg,r]=...
  cordiccart2pol(sfi([0.75:-0.25:-1.0],16,15),sfi(-0.5,16,15))

thNeg =

 -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

r =

 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

詳細

すべて折りたたむ

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 で導入