Main Content

Trigonometric Function

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

  • ライブラリ:
  • Simulink / Math Operations

    HDL Coder / Math Operations

  • Trigonometric Function block

説明

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

複素指数の入力

CORDIC 近似法

CORDIC は、COordinate Rotation DIgital Computer の略語です。ギブンス回転に基づく CORDIC アルゴリズムは、Shift-Add 反復演算のみを必要とするため、ハードウェア効率が最も優れたアルゴリズムの 1 つです。詳細については、詳細を参照してください。ブロック入力に対して追加の要件があります。

[関数]sincossincos、または cos + jsin に設定し、[近似法][CORDIC] に設定した場合の詳細については、Port_1, Port_1Port_1Port_1を参照してください。

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

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

ルックアップ近似法

[関数]sincossincos、または cos + jsin に設定し、[近似法][ルックアップ] に設定した場合の詳細については、Port_1, Port_1Port_1Port_1を参照してください。

端子

入力

すべて展開する

入力。スカラー、ベクトル、または行列として指定します。このブロックは、以下のデータ型の入力信号を受け入れます。

関数入力データ型
  • sin

  • cos

  • sincos

  • cos + jsin

  • atan2

  • 浮動小数点

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

  • tan

  • asin

  • acos

  • atan

  • sinh

  • cosh

  • tanh

  • asinh

  • acosh

  • atanh

  • 浮動小数点

CORDIC 近似の固定小数点型の伝播:

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

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

sincossincos、および cos + jsin

fixdt(1, WL, WL - 2) ここで、WL は入力の語長です。

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

固定小数点 (符号付き)

atan2

fixdt(1, WL, WL – 3)

固定小数点 (符号なし)

atan2

fixdt(1, WL, WL – 2)

ルックアップ近似の固定小数点型の伝播:

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

固定小数点 (符号付き)

sincossincoscos + jsinatan2

fixdt(1, WL, FL)

固定小数点 (符号なし)

sincossincoscos + jsinatan2

fixdt(1, WL - 1, FL)

依存関係

  • [関数]atan2 に設定すると、ブロックは 2 つの入力端子を表示します。最初の入力 (Port_1) は、y 軸、または、関数引数の虚数部です。2 番目の入力 (Port_2) は、x 軸、または、関数引数の実数部です。

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

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

    浮動小数点

    なし

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

    浮動小数点

    CORDIC

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

    浮動小数点

    ルックアップ

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

CORDIC 近似とルックアップ近似:

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

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

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

制限

  • [近似法][CORDIC] または [ルックアップ] に設定したときのみ、固定小数点の入力信号を使用することができます。CORDIC 近似とルックアップ近似は、sincossincoscos + jsin、および atan2 の関数で使用できます。

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

  • [近似法][ルックアップ] に設定した場合、データ点の数について以下の制限があります。

    • smallEnoughNumDataPoints = 2(inputFractionLen-2)+1

    • bigEnoughFractionLen = log2(numberOfDataPoints - 1)+2

    ここで、

    • smallEnoughNumDataPoints は、指定した入力の小数部の長さ inputFractionLen で表現されるデータ点の最大数です。

    • bigEnoughFractionLen は、指定した数 numberOfDataPoints のデータ点を表現するために必要な小数部の最小の長さです。

  • [関数]sincossincos、または cos + jsin に設定し、[近似法][CORDIC] に設定した場合、ブロックには以下の制限があります。

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

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

    [関数]atan2 に設定し、[近似法][CORDIC] に設定した場合、ブロックには以下の制限があります。

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

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

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

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

  • [関数]sincossincos、または cos + jsin に設定し、[近似法][ルックアップ] に設定した場合、ブロックには以下の制限があります。

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

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

    • [関数]atan2 に設定し、[近似法][ルックアップ] に設定した場合、ブロックには以下の制限があります。

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

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

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

atan2 の x 軸、または、関数引数の実数部を入力します。[関数]atan2 に設定すると、ブロックは 2 つの入力端子を表示します。最初の入力 (Port_1) は、y 軸、または、関数引数の虚数部です。2 番目の入力 (Port_2) は、x 軸、または、関数引数の実数部です。(ブロックの向きに関する端子の順番の詳細は、回転または反転後の端子の位置を参照してください)。

依存関係

この端子を有効にするには、[関数]atan2 に設定します。

制限

  • 固定小数点入力信号は、[近似法][CORDIC] または [ルックアップ] に設定されているときのみサポートされます。

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

出力

すべて展開する

指定された三角関数を 1 つ以上の入力に適用した結果 (ラジアン単位) です。各関数は以下をサポートします。

  • スカラー演算

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

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

入力信号の正弦 (ラジアンおよび回転)。

依存関係

この端子を有効にするには、[関数]sincos に設定します。

制限

固定小数点入力信号は、[近似法][CORDIC] または [ルックアップ] に設定されているときのみサポートされます。

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

入力信号の余弦 (ラジアンおよび回転)。

依存関係

この端子を有効にするには、[関数]sincos に設定します。

制限

固定小数点入力信号は、[近似法][CORDIC] または [ルックアップ] に設定されているときのみサポートされます。

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

パラメーター

すべて展開する

アルゴリズム

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

[関数]sincossincos、または cos + jsin に設定し、[近似法][CORDIC] に設定した場合の詳細については、制限を参照してください。

プログラムでの使用

ブロック パラメーター: Operator
型: 文字ベクトル
値: 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'atan2' | 'sinh' | 'cosh' | 'tanh' | 'asinh' | 'acosh' | 'atanh' | 'sincos' | 'cos + jsin'
既定の設定: 'sin'

出力を計算するための近似のタイプを指定します。

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

浮動小数点

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

CORDIC

浮動小数点と固定小数点

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

ルックアップ

浮動小数点と固定小数点 (double および single)

高速な近似ルックアップ テーブル実装が必要な場合。

[関数]sincossincos、または cos + jsin に設定し、[近似法][CORDIC] に設定した場合の詳細については、制限を参照してください。

依存関係

  • このパラメーターを有効にするには、[関数][sin][cos][sincos][cos + jsin] または atan2 を選択します。

  • 固定小数点の入力信号を使用するには、[近似法][CORDIC] または [ルックアップ] に設定しなければなりません。

  • [テーブルのデータ型] パラメーターを有効にするには、このメソッドを [ルックアップ] に設定します。

プログラムでの使用

ブロック パラメーター: ApproximationMethod
型: 文字ベクトル
値: 'None' | 'CORDIC' | 'Lookup'
既定の設定: 'None'

入力がブレークポイント値の間に来た場合、ブロックは隣接するブレークポイントを使って出力値を内挿します。内挿法の詳細については、内挿法を参照してください。

プログラムでの使用

ブロック パラメーター: InterpMethod
型: 文字ベクトル
値: 'Linear point-slope' | 'Flat'
既定の設定: 'Linear point-slope'

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

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

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

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

依存関係

このパラメーターを有効にするには、[関数] パラメーターと [近似法] パラメーターを以下のように設定しなければなりません。

  • [関数][sin][cos][sincos][cos + jsin] または atan2 に設定します。

  • [近似法][CORDIC] に設定します。

プログラムでの使用

ブロック パラメーター: NumberOfIterations
型: 文字ベクトル
値: 固定小数点入力の語長以下の正の整数
既定の設定: '11'

ルックアップ手法の角度の単位を [radian] または [revolution] として指定します。

依存関係

このパラメーターは次の場合に有効になります。

  • [関数][sin][cos][sincos][cos + jsin] または atan2 に設定します。

  • [近似法][ルックアップ] に設定します。

プログラムでの使用

ブロック パラメーター: AngleUnit
型: 文字ベクトル
値: 'radian' | 'revolution'
既定の設定: 'radian'

ルックアップ テーブルのデータ点の数をスカラーの実数として指定します。

依存関係

このパラメーターは次の場合に有効になります。

  • [関数][sin][cos][sincos][cos + jsin] または atan2 に設定します。

  • [近似法][ルックアップ] に設定します。

プログラムでの使用

ブロック パラメーター: NumberOfDataPoints
型: 文字ベクトル
値: スカラー
既定の設定: '16'

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

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

依存関係

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

メモ

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

プログラムでの使用

ブロック パラメーター: OutputSignalType
型: 文字ベクトル
値: 'auto' | 'real' | 'complex'
既定の設定: 'auto'

[acos] および [asin] の場合、このチェック ボックスをオンにすると、範囲外の入力に対する保護が削除されて冗長性が軽減されます。

  • このチェック ボックスをオフにすると、保護が有効になります。ブロックは、範囲外の入力を 1 または -1 に飽和させてから演算を実行します。生成されたコードに範囲外の入力をチェックするコードが含まれます。

  • このチェック ボックスをオンにすると、保護が削除されます。ブロックは、入力値に変更を加えずにすべての演算を実行します。生成されたコードに範囲外の入力をチェックするコードは含まれません。

入力が既に範囲内である場合は、このチェック ボックスをオンにすることで冗長性を軽減できます。

依存関係

このパラメーターは、[関数][acos] および [asin] に設定すると有効になります。

プログラムでの使用

ブロック パラメーター: RemoveProtectionAgainstOutOfRangeInput
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

サンプル時間を -1 以外の値として指定します。詳細については、サンプル時間の指定を参照してください。

依存関係

このパラメーターは、明示的に -1 以外の値に設定されていない限り表示されません。詳細は、サンプル時間が推奨されないブロックを参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: string スカラーまたは文字ベクトル
既定の設定: "-1"

データ型

ルックアップ テーブルのデータ型。次のいずれかとして指定します。

  • 継承: 入力による継承

  • double

  • single

  • fixdt(1,16,0)

  • <data type expression>

データ型の設定の詳細については、信号のデータ型の制御を参照してください。

プログラムでの使用

ブロック パラメーター: TableDataTypeStr
型: string スカラーまたは文字ベクトル
値: Inherit: Inherit via input | single | double | fixdt(1,16,0) | データ型式
既定の設定: Inherit: Inherit via input

[出力] データ型のデータ型プロパティを指定する方法を選択します。次を選択できます。

  • 継承 — データ型の継承ルール (例: [継承: 内部ルールによる継承]) を指定できます。

  • 組み込み — 組み込みデータ型を指定できます。

  • 固定小数点 — データ型の固定小数点の属性を指定できます。

  • — 有効なデータ型を評価する式 (例: fixdt([],16,0)) を指定できます。

依存関係

このパラメーターを有効にするには、[出力データ型] パラメーターで [>>] をクリックします。

[出力] データ型の [符号属性] を指定します。

依存関係

このパラメーターを有効にするには、[モード][固定小数点] に設定します。

[出力] データ型の [スケーリング] を指定します。

依存関係

このパラメーターを有効にするには、[モード][固定小数点] に設定します。

この信号のデータ型オーバーライド モードを選択します。

  • 継承 — モデルに指定されたデータ型オーバーライドの設定を継承します。

  • オフ — モデルに指定されたデータ型オーバーライドの設定を無視し、指定した固定小数点データ型を使用します。

詳細については、Simulink® ドキュメンテーションのデータ型アシスタントを利用したデータ型の指定を参照してください。

ヒント

個々のデータ型に対してデータ型オーバーライドをオフにする機能により、データ型オーバーライドを適用する際に、モデル内のデータ型をさらに効果的に制御できます。たとえば、このオプションを使用すると、データ型オーバーライド設定にかかわらず、データ型が下流ブロックの要件を満たすことを確認できます。

依存関係

このパラメーターを有効にするには、[データ型アシスタントを表示] ボタンをクリックして、[モード][組み込み] または [固定小数点] に設定します。

量子化された整数をもつ語のビット サイズを指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[モード][固定小数点] に設定します。

固定小数点データ型の小数部の長さを正または負の整数として指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、次のように設定します。

  • [モード][固定小数点] にする

  • [スケーリング][2 進小数点] にする

ブロックの特性

データ型

double | fixed pointa | half | integera | single

直接フィードスルー

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

a このブロックは、'近似法' が CORDIC の場合に固定小数点データ型および基本整数データ型をサポートします。

詳細

すべて展開する

参照

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

[2] Andraka, Ray “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): 191–200.

[3] Walther, J.S., “A Unified Algorithm for Elementary Functions,” Proceedings of the Spring Joint Computer Conference, May 18-20, 1971: 379–386.

[4] Schelin, Charles W., “Calculator Function Approximation,” The American Mathematical Monthly 90, no. 5 (1983): 317–325.

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

バージョン履歴

R2006a より前に導入

参考

ブロック

関数