Sine Wave
連続正弦波または離散正弦波の生成
ライブラリ:
DSP System Toolbox /
Sources
DSP System Toolbox HDL Support /
Sources
説明
Sine Wave ブロックは実数または複素数のマルチチャネルの正弦波信号を生成します。各出力チャネルには独立した振幅と周波数および位相があります。ブロックは、浮動小数点データ型および符号付き固定小数点データ型をサポートします。
ブロックは、[出力の実数/複素数] パラメーターを [実数]
に設定すると、実数の正弦波信号を生成します。実数の正弦波出力は次のようなタイプの式で定義されます
ここで、A は [振幅] パラメーター、f (Hz 単位) は [周波数] パラメーター、ϕ (ラジアン単位) は [位相オフセット] パラメーターでそれぞれ指定します。
ブロックは、[出力の実数/複素数] パラメーターを [複素数]
に設定すると、複素指数信号を生成します。この複素指数信号は次のようなタイプの式で定義されます
マルチチャネル出力の生成
実数と複素数の両方の正弦波では、[振幅]、[周波数] および [位相オフセット] の各パラメーター値 (A、f および ϕ) はスカラーまたは長さ N のベクトルにすることができます。ここで、N は出力に望ましいチャネル数です。これらのパラメーターの少なくとも 1 つを長さ N のベクトルとして指定すると、他のパラメーターで指定されたスカラー値が各チャネルに適用されます。
たとえば、以下のような実数正弦波を含む 3 チャネルの出力を生成するには、ブロック パラメーターを次のように設定します。
出力の実数/複素数 =
実数
振幅 =
[1 2 3]
周波数 =
[1000 500 250]
位相オフセット =
[0 0 pi/2]
例
サンプルベースの正弦波の生成
この例では、DSP System Toolbox の Sine Wave ブロックからサンプルベースの正弦波を生成するさまざまな方法を比較します。
フレームベースの正弦波の生成
この例では、DSP System Toolbox™ の Sine Wave ブロックからフレームベースの正弦波を生成するさまざまな方法を比較します。
端子
出力
Port_1 — 正弦波信号
スカラー | ベクトル | 行列
正弦波信号をスカラーまたはベクトルとして出力します。出力の実数/複素数の詳細については、説明を参照してください。マルチチャネル サポートの詳細については、マルチチャネル出力の生成を参照してください。
ヒント
固定小数点データ型を出力するには、[サンプル モード] を [離散]
、[計算法] を [テーブル ルックアップ]
に設定しなければなりません。
データ型: single
| double
| fixed point
複素数のサポート: あり
パラメーター
メイン
振幅 — 正弦波の振幅
1
(既定値) | スカラー | ベクトル
N 出力チャネルそれぞれに正弦波の振幅を含む長さ N のベクトル、またはすべての N チャネルに適用するスカラーです。ベクトルの長さは [周波数] パラメーターと [位相オフセット] パラメーターで指定した長さと同じでなければなりません。
ヒント
このパラメーターは、[計算法] が [三角関数]
または [差分]
に設定されている場合にのみ、調整可能 (Simulink)です。
調整可能: Yes
周波数 (Hz) — 各正弦波の周波数
100
(既定値) | スカラー | ベクトル
N 出力チャネルそれぞれに正弦波の周波数 (Hz 単位) を含む長さ N のベクトル、またはすべての N チャネルに適用するスカラーです。ベクトルの長さは [振幅] パラメーターと [位相オフセット] パラメーターで指定した長さと同じでなければなりません。正、ゼロまたは負の周波数を指定できます。
ヒント
このパラメーターは、以下を設定する場合、調整可能 (Simulink)です。
ソルバーの [タイプ] を
[固定ステップ]
。[サンプル モード] を
[連続]
。[サンプル モード] を
[離散]
、[計算法] を[三角関数]
。
調整可能: Yes
位相オフセット (rad) — 位相オフセット
0
(既定値) | スカラー | ベクトル
N 出力チャネルそれぞれに正弦波の位相オフセット (ラジアン単位) を含む長さ N のベクトル、またはすべての N チャネルに適用するスカラーです。ベクトルの長さは [振幅] パラメーターと [周波数] パラメーターで指定した長さと同じでなければなりません。
ヒント
このパラメーターは、以下を設定する場合、調整可能 (Simulink)です。
ソルバーの [タイプ] を
[固定ステップ]
。[サンプル モード] を
[連続]
。[サンプル モード] を
[離散]
、[計算法] を[三角関数]
。
調整可能: Yes
サンプル モード — 連続または離散サンプリング モード
離散
(既定値) | 連続
サンプリング モードを [連続]
または [離散]
として指定します。
連続
連続モードでは、i 番目のチャネルの正弦波 yi が連続関数として計算されます。
また、ブロックの出力は連続になります。このモードでは、ブロックは [サンプル時間] が
0
に設定された Simulink® Sine Wave ブロックと同じように動作します。このモードでは精度が高くなりますが、各シミュレーション ステップで三角関数評価が必要になり、計算量が増大します。また、この手法では絶対シミュレーション時間が追跡されるため、時間値が上限に達したときに、最終的には不連続点が発生してしまいます。多くの DSP System Toolbox™ ブロックは連続時間の入力を受け入れないことにも注意してください。
離散
離散モードでは、三角関数の直接評価、テーブル ルックアップまたは微分法によって、ブロックは離散時間出力を生成することができます。これらの計算方法の詳細については、アルゴリズムを参照してください。
出力の実数/複素数 — 実数または複素数波形
実数
(既定値) | 複素数
生成する波形のタイプ。[実数]
は実数の正弦波を指定し、[複素数]
は複素指数を指定します。
計算法 — 離散時間正弦波の計算方法
三角関数
(既定値) | テーブル ルックアップ
| 微分
離散時間正弦波が生成される方法。次のようになります。[三角関数]
、[テーブル ルックアップ]
または [差分]
。使用可能な各オプションの詳細については、アルゴリズムを参照してください。
依存関係
このパラメーターは、[サンプル モード] を [離散]
に設定した場合にのみ表示されます。
メモ
固定小数点正弦波を生成するには、[計算法] を [テーブル ルックアップ]
に設定しなければなりません。
テーブルを最適化する対象 — 速度またはメモリの最適化
速度
(既定値) | メモリ
[速度]
または [メモリ]
に対する正弦値テーブルを最適化します。速度で最適化すると、テーブルには k 要素が含まれ、メモリで最適化すると、テーブルには k/4 要素が含まれます。ここで、k は正弦波の 1 完全周期での入力サンプル数です。
依存関係
このパラメーターは、[計算法]
パラメーターを [テーブル ルックアップ] に設定した場合にのみ表示されます。
サンプル時間 — サンプル周期
1/1000
(既定値) | スカラー
ゼロより大きい有限のスカラーとして、正弦波がサンプリングされる周期 Ts。ブロックの出力フレーム周期は MTs で、M は [フレームあたりのサンプル数] パラメーターで指定します。
依存関係
このパラメーターを有効にするには、[サンプル モード] を [離散]
に設定します。
フレームあたりのサンプル数 — フレームあたりのサンプル数
1
(既定値) | 正の整数
出力フレーム M にバッファリングする、各正弦波からの連続するサンプル数。正のスカラー整数として指定します。このパラメーターは調整できません。
ブロック出力はフレーム周期 MTs をもつ M 行 N 列の行列となります。Ts は [サンプル時間] パラメーターで指定します。
依存関係
このパラメーターを有効にするには、[サンプル モード] を [離散]
に設定します。
再度有効になったら状態をリセット — Enabled Subsystem 内での状態の動作
時間ゼロで再開
(既定値) | シミュレーション時間で再開
このパラメーターは、サブシステムが再度イネーブルになるときの Sine Wave ブロックの動作を決定します。ブロックは、自身を開始状態にリセットする ([時間ゼロで再開]
) か、または現在のシミュレーション時間に基づいて正弦波の生成を再開 ([シミュレーション時間で再開]
) することができます。
依存関係
このパラメーターは、Sine Wave ブロックが Enabled Subsystem 内にあり、Enable (Simulink) ブロックの [イネーブル時の状態] パラメーターが [reset]
に設定されている場合にのみ適用されます。
データ型
出力データ型 — 出力データ型
double
(既定値) | single
| fixdt(1,16)
| fixdt(1,16,0)
| <データ型式>
| 継承: 逆伝播による継承
[出力データ型] のデータ型プロパティを指定する方法を選択します。以下の選択肢があります。
継承
— データ型の継承に関するルールを指定できます。例:[継承: 逆伝播による継承]
組み込み
— 組み込みデータ型を指定できます。例:[double]
固定小数点
— データ型の固定小数点の属性を指定できます。式
— 有効なデータ型として評価する式を指定できます。例:fixdt(1,16)
データ型アシスタント
モード — データ型モード
組み込み
(既定値) | 継承
| 固定小数点
| 式
[出力データ型] のデータ型プロパティを指定する方法を選択します。以下の選択肢があります。
継承
— データ型の継承に関するルールを指定できます。例:[継承: 逆伝播による継承]
組み込み
— 組み込みデータ型を指定できます。例:[double]
固定小数点
— データ型の固定小数点の属性を指定できます。式
— 有効なデータ型として評価する式を指定できます。例:fixdt(1,16)
詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
符号属性 — 固定小数点データの符号属性
符号付き
(既定値)
固定小数点出力の符号属性を指定します。詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
制限
Sine Wave は [符号付き]
データ型のみをサポートします。
スケーリング — 固定小数点データのスケーリング手法
最高精度
(既定値) | 2 進小数点
固定小数点データのスケーリング手法を指定し、オーバーフロー状態を回避して量子化誤差を最小限に抑えます。詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
依存関係
このパラメーターを有効にするには、[モード] を [固定小数点]
に設定します。
語長 — 量子化された整数を保持するワードのビット サイズ
16
(既定値) | 2 から 128 までの整数
量子化された整数を保持するワードのビット サイズを 2 から 128 までの正の整数として指定します。詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
依存関係
このパラメーターを有効にするには、[モード] を [固定小数点]
に設定します。
小数部の長さ — 固定小数点データ型の小数部の長さ
0
(既定値) | 整数スカラー
固定小数点データ型の小数部の長さを正または負の整数スカラーとして指定します。
依存関係
このパラメーターを有効にするには、[モード] を [固定小数点]
、[スケーリング] を [2 進小数点]
に設定します。
データ型オーバーライド — データ型オーバーライド モード
継承
(既定値) | オフ
この信号のデータ型オーバーライド モードを選択します。以下の選択肢があります。
継承
— モデルに指定したデータ型オーバーライドの設定を継承します。オフ
— モデルに指定したデータ型オーバーライドの設定を無視し、ユーザー指定の固定小数点データ型を使用します。
依存関係
このパラメーターを有効にするには、[モード] を [組み込み]
または [固定小数点]
に設定します。詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
アルゴリズム
[サンプル モード] パラメーターで [離散]
を選択すると、その下にある [計算法] パラメーターで、離散正弦波を生成するための次の 3 つのオプションが提供されます。[三角関数]
、[テーブル ルックアップ]
、[差分]
。
三角関数
三角関数法は、以下の連続関数をサンプリングすることによって i 番目のチャネル yi にある正弦波を計算します。
周期は Ts を使用します。Ts は [サンプル時間] パラメーターで指定します。この演算モードには、[連続]
サンプル モードと同じ利点と欠点があります。
各サンプル時間で、ブロックは正弦波の "最初のサイクル内" の適切な時間値で正弦波関数を評価します。三角評価を各正弦波の最初のサイクルに制限することにより、ブロックは非常に大きな数値の正弦波を計算するときに生じる不正確さを回避し、拡張演算中に不連続が発生する可能性を除去します (絶対時間変数がオーバーフローする可能性があるとき)。したがって、テーブル ルックアップ法に必要なメモリを回避しますが、より多くの浮動小数点演算の負荷がかかります。
テーブル ルックアップ
テーブル ルックアップ法はシミュレーションの開始時に各出力正弦波の "一意の" サンプルを事前計算し、必要に応じてサンプルをメモリから呼び出します。有限長のテーブルはすべての出力シーケンスが繰り返されるときにのみ作成できるため、この手法では出力の各正弦波の周期をサンプル周期で等分割できる必要があります。すなわち、1/(fiTs) = ki は各チャネル i = 1, 2, ..., N について整数値でなければなりません。
[テーブルを最適化する対象] パラメーターを [速度]
に設定すると、各チャネルに作成したテーブルには ki 要素が含まれます。[テーブルを最適化する対象] パラメーターを [メモリ]
に設定すると、各チャネルに作成したテーブルには ki/4 要素が含まれます。
長い出力シーケンスの場合、テーブル ルックアップ法では、必要となる浮動小数点演算は他のどの手法よりもはるかに少なくなりますが、特に高いサンプル レート (長いテーブル) の場合に非常に大量のメモリが要求されます。この手法は DSP ハードウェアのコードのエミュレートまたは生成を目的としたモデルに推奨されるため、実行速度を最適化しなければなりません。
メモ
このブロックのルックアップ テーブルは倍精度浮動小数点値から作成されます。したがって、[テーブル ルックアップ]
計算モードを使用する場合、出力で得られる精度の最大値は 53 ビットです。[出力] または [ユーザー定義] データ型の語長を 53 ビットより大きい値に設定しても出力の精度は上がりません。
ヒント
固定小数点正弦波を生成するには、[テーブル ルックアップ]
を選択しなければなりません。
微分
微分法はインクリメンタル アルゴリズムを使用します。このアルゴリズムは、次の恒等式を使用して、前のサンプル時間 (および事前計算された更新項目) で計算された出力値に基づいて出力サンプルを計算します。
したがって、i 番目のチャネルの正弦波の更新方程式 yi は行列形式で次のように記述することができます。
Ts は [サンプル時間] パラメーターで指定します。Ts は定数のため、右側の行列は定数となり、シミュレーションの開始時に 1 回計算できます。その後、各タイム ステップでの単純な行列の乗算によって、Aisin[2πfi(t+Ts)+ϕi] の値を sin(2πfit+ϕi) と cos(2πfit+ϕi) の値から計算します。
このモードでは計算負荷が減少しますが、累積量子化誤差により、時間の経過と共にドリフトする可能性があります。この手法は絶対時間値に依存しないので、(絶対時間変数がオーバーフローする可能性がある) 拡張演算中に不連続が発生する危険性はありません。
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
Sine Wave ブロックは、連続のサンプル モードで作成された場合、絶対シミュレーション時間を参照します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
メモ
HDL コード生成用に最適化され、ハードウェアと親和性の高い制御信号をもつ正弦波ジェネレーターについては、NCO (DSP HDL Toolbox)およびGenerate Sine Wave (DSP HDL Toolbox)を参照してください。DSP HDL Toolbox™ ブロックは、ハードウェアと親和性の高い制御信号を使用する HDL 最適化アルゴリズムを提供し、Simulink で HDL アルゴリズムのレイテンシをシミュレートします。
HDL Coder™ は、HDL の実装および合成ロジックに影響を与える、追加の構成オプションを提供します。
このブロックは 1 つの既定の HDL アーキテクチャをもっています。
HDL コードを生成する場合、次のような Sine Wave ブロックの設定を選択しなければなりません。
計算法:
テーブル ルックアップ
サンプル モード:
離散
出力
出力端子のデータ型を
single
またはdouble
にすることはできません。このブロックは、HDL コード生成時はフレームベースのベクトル出力をサポートしません。振幅と周波数配列からのベクトル出力はサポートされています。
このブロックは、複素信号に対するコード生成をサポートします。
バージョン履歴
R2006a より前に導入
参考
ブロック
- Chirp | Signal From Workspace | Signal Generator (Simulink) | Sine Wave (Simulink) | Enabled Subsystem (Simulink)
関数
オブジェクト
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)