Main Content

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

Trigonometric Function

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

  • Trigonometric Function block

ライブラリ:
Simulink / Math Operations
HDL Coder / 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

複素指数の入力

CORDIC 近似法

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

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

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

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

ルックアップ近似法

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

すべて展開する

この例では、Trigonometric Function ブロックを使用して浮動小数点入力の正弦を計算する方法を示します。Trigonometric Function ブロックの出力は入力と同じデータ型をもちます。入力データ型は浮動小数点で、[近似法] が [none] であるからです。

この例では、Trigonometric Function ブロックを使用して、固定小数点入力信号に対する sincos の CORDIC 近似を計算します。

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

  • 関数: sincos

  • 近似法: CORDIC

  • 反復回数: 11

CORDIC 近似法を使用する場合、Trigonometric Function ブロックは範囲 [-2pi,2pi) 内でなければなりません。入力が固定小数点信号で [近似法]CORDIC に設定されているため、Trigonometric Function ブロックの出力タイプは fixdt(1,13,11) です。出力の小数部の長さは、入力の語長から 2 を差し引いた値と等しくなります。

この例では、Trigonometric Function ブロックの 2 つの異なる構成で複素指数出力を比較します。

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

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

端子

入力

すべて展開する

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

関数入力データ型
  • 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)

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

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

固定小数点 (符号付き)

sin, cos, sincos, cos + jsin, atan2

fixdt(1, WL, FL)

固定小数点 (符号なし)

sin, cos, sincos, cos + jsin, atan2

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

atan2x 軸、または、関数引数の実数部を入力します。[関数]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"

データ型

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

  • Inherit:Inherit via input

  • 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 より前に導入

参考

ブロック

関数