ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Trigonometric Function

入力に対する指定された三角関数

ライブラリ

Math Operations

説明

サポートされる関数

Trigonometric Function ブロックは、一般的な三角関数を実行します。[関数] パラメーター リストから以下のいずれかの関数を選択できます。

関数説明数式MATLAB® 等価
sin

入力の正弦

sin(u)

sin
cos

入力の余弦

cos(u)

cos
tan

入力の正接

tan(u)

tan
asin

入力の逆正弦

asin(u)

asin
acos

入力の逆余弦

acos(u)

acos
atan

入力の逆正接

atan(u)

atan
atan2

入力の 4 象限逆正接

atan2(u)

atan2
sinh

入力の双曲線正弦

sinh(u)

sinh
cosh

入力の双曲線余弦

cosh(u)

cosh
tanh

入力の双曲線正接

tanh(u)

tanh
asinh

入力の逆双曲線正弦

asinh(u)

asinh
acosh

入力の逆双曲線余弦

acosh(u)

acosh
atanh

入力の逆双曲線正接

atanh(u)

atanh
sincos

入力の正弦、入力の余弦

cos + jsin

複素指数の入力

このブロックは、ラジアン単位の 1 つまたは複数の入力に関数を適用した結果を出力します。各関数は以下をサポートします。

  • スカラー演算

  • 要素単位のベクトル演算と行列演算

    メモ:   すべてのコンパイラが関数 asinhacosh、および atanh をサポートするわけではありません。これらの関数をサポートしないコンパイラを使用する場合は、警告が表示され、生成コードはリンクされません。

関数 atan2 のブロックの外観

関数 atan2 を選択すると、ブロックによって 2 つの入力が表示されます。最初の入力は、y 軸、または、関数引数の虚数部です。2 番目の入力は、x 軸、または、関数引数の実数部です (可変のブロック方向に対する端子の順番の概要は、Simulink® ドキュメンテーションの「ブロックの回転方法」を参照してください)。

関数 sincos のブロックの外観

関数 sincos を選択すると、ブロックによって 2 つの出力が表示されます。最初の出力は関数引数の正弦、2 番目の出力は関数引数の余弦です。

定義

CORDIC

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

CORDIC の反復数を増やすと、結果の精度が高まりますが、それにより計算量も増加し待ち時間も増えます。

サポートするデータ型

このブロックは、以下のデータ型の入力信号を受け入れます。

関数入力データ型
  • sin

  • cos

  • sincos

  • cos + jsin

  • atan2

  • 浮動小数点

  • 固定小数点 ([近似法][CORDIC] の場合のみ)

  • tan

  • asin

  • acos

  • atan

  • sinh

  • cosh

  • tanh

  • asinh

  • acosh

  • atanh

  • 浮動小数点

複素入力信号は、このブロックの atan2 以外のすべての関数でサポートされます。

[近似法][なし] または [CORDIC] に設定すると、浮動小数点の入力信号を使用することができます。ただし、ブロックの出力データ型は、どちらの近似法を選択したかにより異なります。

入力データ型近似法出力データ型

浮動小数点

なし

[出力信号タイプ] の選択内容によって異なります。auto (入力のデータ型と同じ)、realcomplex のいずれかを選択することができます。

浮動小数点

CORDIC

入力と同じ。CORDIC 近似法を使用してブロック出力を計算する場合、[出力信号タイプ] は使用できません。

[近似法][CORDIC] に設定したときのみ、浮動小数点の入力信号を使用することができます。CORDIC 近似は、関数 sin、関数 cos、関数 sincos、関数 cos + jsin および関数 atan2 でのみ使用できます。関数 atan2 の場合、入力データ型と出力データ型の関係は、浮動小数点の入力が符号付きか符号なしかによっても異なります。

入力データ型関数出力データ型

固定小数点 (符号付きおよび符号なし)

sincossincos、および cos + jsin

fixdt(1,WL,WL – 2) ここで、WL は入力された単語の長さです。

この固定小数点型を指定すると、CORDIC アルゴリズムで最高の精度を実現できます。

固定小数点 (符号付き)

atan2

fixdt(1, WL, WL – 3)

固定小数点 (符号なし)

atan2

fixdt(1, WL, WL – 2)

CORDIC 近似用:

  • 関数 sin、関数 cos、関数 sincos、関数 cos + jsin および関数 atan2 の場合、入力は実数でなければなりません。

  • 関数 sin、関数 cos、関数 sincos および関数 atan2 の場合、出力は実数になります。

  • 関数 cos + jsin の場合、出力は複素数になります。

CORDIC 近似における無効な入力

CORDIC 近似法 (定義を参照) を使用する場合、ブロック入力に対してさらに制約事項があります。

関数 sin、関数 cos、関数 sincos、関数 cos + jsin の場合:

  • 符号付き固定小数点型の場合、入力角度は範囲 [–2π, 2π) ラジアンの範囲内に収まらなければなりません。

  • 符号なし固定小数点型の場合、入力角度は範囲 [0, 2π) ラジアンの範囲内に収まらなければなりません。

関数 atan2 の場合:

  • 入力は同じサイズでなければなりません。または、少なくとも 1 つの値がスカラー値でなければなりません。

  • いずれの入力も同じデータ型でなければなりません。

  • 符号付き固定小数点型の場合、語長は 126 以下でなければなりません。

  • 符号なし固定小数点型の場合、語長は 125 以下でなければなりません。

このテーブルでは、無効な入力に対して何が起こるかについての概要が示されます。

ブロックの使用法無効な入力による影響
シミュレーションエラーが表示されます。
生成コード未定義の動作が発生します。生成コードまたはアクセラレータ モードで未定義の動作に依存するのを防ぎます。
アクセラレータ モード

パラメーターとダイアログ ボックス

関数

三角関数を指定します。ブロック アイコン上の関数名が、ここで選択した関数名に切り替わります。

近似法

出力を計算するための近似のタイプを指定します。このパラメーターは、[関数][sin][cos][sincos][cos + jsin] または atan2 を選択した場合にのみ表示されます。

近似法サポートされるデータ型このメソッドを使用できる場合
[なし] (既定の設定)

浮動小数点

既定のテイラー級数アルゴリズムを使用する必要がある場合。

CORDIC

浮動小数点と固定小数点

高速の近似計算が必要な場合。

[CORDIC] を選択し、ブロックのサイズを既定のサイズより大きくすると、ブロックのアイコンが変化します。

関数ブロック アイコン
sin

cos

sincos

cos + jsin

atan2

反復回数

CORDIC アルゴリズムを実行するには、反復回数を指定します。既定値は 11 です。

  • ブロック入力のデータ型が浮動小数点の場合、反復回数には正の整数を指定できます。

  • ブロック入力のデータ型が固定小数点の場合、反復回数を語長の値より大きくすることはできません。

    たとえば、ブロック入力が fixdt(1,16,15) の場合、語長は 16 です。この場合、反復回数に 16 より大きい値を指定することはできません。

このパラメーターは、次の条件が両方とも当てはまる場合に現れます。

  • [関数][sin][cos][sincos][cos + jsin] または atan2 を選択した場合

  • [近似法][CORDIC] を選択した場合

出力信号タイプ

Trigonometric Function ブロックの出力信号タイプを autoreal、または complex として選択します。

関数入力信号タイプ出力信号タイプ
自動実数複素数
[関数] パラメーターに対する任意の選択内容realrealrealcomplex
complexcomplexerrorcomplex

    メモ:   [関数]atan2 の場合、複素入力信号はシミュレーションまたはコード生成でサポートされません。

[近似法][CORDIC] に設定すると、このパラメーターは無効になります。

サンプル時間 (継承は -1)

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細は、Simulink ドキュメンテーションの「 サンプル時間の指定」を参照してください。

入力データ型が浮動小数点の関数 sin

次のモデルモデルがあるとします。

Constant ブロックの主要ブロック パラメーターは次のとおりです。

パラメーター設定
定数値1
出力データ型[継承: '定数値' からの継承]

Trigonometric Function ブロックのブロック パラメーターは次のとおりです。

パラメーター設定
関数sin
近似法なし
出力信号タイプauto
サンプル時間-1

入力タイプが浮動小数点であり、[近似法][なし] に設定されているため、Trigonometric Function ブロックの出力タイプは入力タイプと同じです。

入力データ型が固定小数点の関数 sincos

次のモデルモデルがあるとします。

Constant ブロックの主要ブロック パラメーターは次のとおりです。

パラメーター設定
定数値

1

ブロック入力は符号付き固定小数点型を使用し、Trigonometric Function ブロックでは CORDIC アルゴリズムが使用されているため、この値は範囲 [–2π, 2π) 内に収まらなければなりません。

出力データ型fixdt(1,13,5)

Trigonometric Function ブロックのブロック パラメーターは次のとおりです。

パラメーター設定
関数sincos
近似法[CORDIC]
[反復回数]11
[サンプル時間]-1

入力タイプが固定小数点であり、[近似法][CORDIC] に設定されているため、Trigonometric Function ブロックの出力タイプは fixdt(1,13,11) です。出力の小数部長は、入力の語長から 2 を差し引いた値と等しくなります。

複素指数出力に対するブロックの動作

次のモデルモデルは、2 つの近似モデルにおける複素指数出力を比較しています。

Constant ブロックの主要ブロック パラメーターは次のとおりです。

ブロックパラメーター設定
Constant定数値[-pi/2 0 pi]
出力データ型fixdt(1,16,2)
Constant1定数値[-pi/2 0 pi]
出力データ型double

Trigonometric Function ブロックのブロック パラメーターは次のとおりです。

ブロックパラメーター設定
Approximation = 'CORDIC'[関数][cos + jsin]
[近似法][CORDIC]
[反復回数]11
[サンプル時間]-1
Approximation = 'None'[関数][cos + jsin]
[近似法][なし]
[サンプル時間]-1

[近似法][CORDIC] とした場合、入力のデータ型は固定小数点となり、このケースの場合は fixdt(1,16,2) となります。出力の小数部の長さは入力の語長から 2 を差し引いた値と等しくなるので、出力のデータ型は fixdt(1,16,14) となります。

[近似法][なし] とした場合、入力のデータ型は浮動小数点としなければなりません。出力のデータ型は、入力のデータ型と同じです。

デジタル波形生成: 正弦波の近似

CORDIC 正弦近似を使用してデジタル波形を生成する方法の詳細は、sldemo_tonegen_fixptsldemo_tonegen_fixpt モデルの「説明説明」を参照してください。

特性

直接フィードスルー

あり

サンプル時間

駆動ブロックから継承

スカラー拡張

あり、関数が 2 つ入力を必要とする場合

離散化

あり

多次元化

あり

ゼロクロッシング検出

なし

参照‏

[1] Volder, JE. “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers. Vol. EC-8, September 1959, pp. 330–334.

[2] Andraka, R. “A survey of CORDIC algorithm for FPGA based computers.” Proceedings of the 1998 ACM/SIGDA sixth international symposium on Field programmable gate arrays. Feb. 22–24, 1998, pp. 191–200.

[3] Walther, J.S. “A Unified Algorithm for Elementary Functions.” Hewlett-Packard Company, Palo Alto. Spring Joint Computer Conference, 1971, pp. 379–386. (from the collection of the Computer History Museum). www.computer.org/csdl/proceedings/afips/1971/5077/00/50770379.pdf

[4] Schelin, Charles W. “Calculator Function Approximation.” The American Mathematical Monthly. Vol. 90, No. 5, May 1983, pp. 317–325.

この情報は役に立ちましたか?