Main Content

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

cordicabs

CORDIC ベースの絶対値

説明

r = cordicabs(c) は、c の複素数要素の大きさを返します。

r = cordicabs(c,niters) は、CORDIC アルゴリズムの反復を niters で指定された回数だけ実行します。

r = cordicabs(___,'ScaleOutput',b) は、逆 CORDIC ゲイン係数によって出力をスケーリングするかどうかを指定します。

すべて折りたたむ

関数 cordicabsabs で倍精度の入力値を使用して計算した絶対値を比較します。

dblValues = complex(rand(5,4),rand(5,4))
dblValues = 5×4 complex

   0.8147 + 0.6557i   0.0975 + 0.7577i   0.1576 + 0.7060i   0.1419 + 0.8235i
   0.9058 + 0.0357i   0.2785 + 0.7431i   0.9706 + 0.0318i   0.4218 + 0.6948i
   0.1270 + 0.8491i   0.5469 + 0.3922i   0.9572 + 0.2769i   0.9157 + 0.3171i
   0.9134 + 0.9340i   0.9575 + 0.6555i   0.4854 + 0.0462i   0.7922 + 0.9502i
   0.6324 + 0.6787i   0.9649 + 0.1712i   0.8003 + 0.0971i   0.9595 + 0.0344i

r_dbl_ref = abs(dblValues)
r_dbl_ref = 5×4

    1.0458    0.7640    0.7234    0.8356
    0.9065    0.7936    0.9711    0.8128
    0.8586    0.6730    0.9964    0.9691
    1.3064    1.1604    0.4876    1.2371
    0.9277    0.9800    0.8062    0.9601

r_dbl_cdc = cordicabs(dblValues)
r_dbl_cdc = 5×4

    1.0458    0.7640    0.7234    0.8356
    0.9065    0.7936    0.9711    0.8128
    0.8586    0.6730    0.9964    0.9691
    1.3064    1.1604    0.4876    1.2371
    0.9277    0.9800    0.8062    0.9601

固定小数点入力の絶対値を比較します。

fxpValues = fi(dblValues)
fxpValues = 
   0.8147 + 0.6557i   0.0975 + 0.7578i   0.1576 + 0.7061i   0.1419 + 0.8235i
   0.9058 + 0.0357i   0.2785 + 0.7431i   0.9706 + 0.0318i   0.4218 + 0.6948i
   0.1270 + 0.8491i   0.5469 + 0.3922i   0.9572 + 0.2769i   0.9157 + 0.3171i
   0.9134 + 0.9340i   0.9575 + 0.6555i   0.4854 + 0.0462i   0.7922 + 0.9502i
   0.6324 + 0.6787i   0.9649 + 0.1712i   0.8003 + 0.0971i   0.9595 + 0.0345i

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 15
r_fxp_cdc = cordicabs(fxpValues)
r_fxp_cdc = 
    1.0458    0.7640    0.7234    0.8356
    0.9066    0.7935    0.9712    0.8128
    0.8586    0.6730    0.9965    0.9691
    1.3064    1.1604    0.4876    1.2371
    0.9277    0.9799    0.8062    0.9601

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 18
        FractionLength: 15

入力引数

すべて折りたたむ

複素数入力配列。スカラー、ベクトル、行列、または多次元配列として指定します。すべての入力値は、同じデータ型でなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
複素数のサポート: あり

CORDIC アルゴリズムを実行する反復回数。正の整数値スカラーとして指定します。

niters を指定しない場合や指定した値が大きすぎた場合は、アルゴリズムでは最大値が使用されます。固定小数点の演算では、反復の最大回数は c の語長よりも 1 少なくなります。浮動小数点の演算では、最大値は double で 52、single で 23 です。

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

逆 CORDIC ゲイン係数によって出力をスケーリングするかどうか。数値または logical 1 (true) または 0 (false) として指定します。

データ型: logical

出力引数

すべて折りたたむ

複素数入力値の大きさの値。スカラー、ベクトル、行列、または多次元配列として返されます。入力 c が固定小数点の場合、r は 2 進小数点スケーリングを使用した符号付き固定小数点データ型として返されます。入力が符号付きの場合、r の語長は入力の語長 + 2 となります。入力が符号なしの場合、r の語長は入力の語長 + 3 となります。r の小数部の長さは、常に入力 c の小数部の長さと同じになります。

詳細

すべて折りたたむ

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 が追加されていません。

参照

[1] Volder, Jack E. “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers. EC-8, no. 3 (Sept. 1959): 330–334.

[2] Andraka, Ray. “A Survey of CORDIC Algorithm for FPGA Based Computers.” In Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays, 191-200. https://dl.acm.org/doi/10.1145/275107.275139.

[3] Walther, J.S. “A Unified Algorithm for Elementary Functions.” In Proceedings of the May 18-20, 1971 Spring Joint Computer Conference, 379-386. https://dl.acm.org/doi/10.1145/1478786.1478840.

[4] Schelin, Charles W. “Calculator Function Approximation.” The American Mathematical Monthly, no. 5 (May 1983): 317-325. https://doi.org/10.2307/2975781.

拡張機能

バージョン履歴

R2011b で導入