Main Content

フレームベースの処理用の信号の作成

フレームベースの処理では、ブロックは一度に 1 つのフレームのデータを処理します。データの各フレームには独立チャネルからの連続サンプルが含まれます。各チャネルは入力信号の列によって表されます。たとえば、フレームベースの処理の視点からは、次の 3 行 2 列の行列には 2 チャネルあり、それぞれ 3 つのサンプルが含まれています。

フレームベースの処理を実行するようにブロックを構成すると、ブロックは M 行 1 列のベクトルをフレームごとに M 個のサンプルが含まれる単一チャネル信号として解釈します。同様に、ブロックは M 行 N 列の行列を N 個の独立したチャネルとチャネルごとに M 個のサンプルを持つマルチチャネル信号として解釈します。たとえば、フレームベースの処理では、ブロックは次の一連の 3 行 2 列の行列をフレーム サイズが 3 の 2 チャネル信号として解釈します。

フレームベースの処理を使用すると、複数のサンプルを一度に処理できるため、多くの信号処理アプリケーションで有利です。データをフレームにバッファリングしてマルチサンプルのデータ フレームを処理することにより、信号処理アルゴリズムの計算時間を改善できることがよくあります。フレームベースの処理を実行するには、DSP System Toolbox™ ライセンスを所有していなければなりません。

フレームベースの処理の最近変更された点の詳細については、DSP System Toolbox Release Notes のFrame-based processing changesの節を参照してください。

このページでは、フレームベースの処理用の信号を Sine Wave ブロックと Signal From Workspace ブロックを使用して作成する方法を示します。この信号を受け取るブロックは、信号に対して、ブロックのダイアログ ボックスで設定されたパラメーターに基づいてサンプルベースの処理またはフレームベースの処理を実装することに注意してください。

Sine Wave ブロックを使用した信号の作成

  1. 新しい Simulink® モデルを作成します。

  2. Sources ライブラリから Sine Wave ブロックをクリックしてモデルにドラッグします。

  3. Matrix Operations ライブラリから Matrix Sum ブロックをクリックしてモデルにドラッグします。

  4. Simulink Sinks ライブラリから To Workspace ブロックをクリックしてモデルにドラッグします。

  5. ブロックをモデルに追加した順序で接続します。

  6. Sine Wave ブロックをダブルクリックし、ブロック パラメーターを次のように設定します。

    • Amplitude = [1 3 2]

    • Frequency = [100 250 500]

    • Sample time = 1/5000

    • Samples per frame = 64

    これらのパラメーターに基づいて、Sine Wave ブロックは、振幅が 132、周波数がそれぞれ 100 Hz、250 Hz、500 Hz の 3 つの正弦波を出力します。サンプル周期 1/5000 は最も高い正弦波周波数の 10 倍であり、ナイキスト基準を満たします。フレーム サイズはいずれの正弦波についても 64 であるため、出力は 64 行になります。

  7. [OK] をクリックして、これらのパラメーターを保存し、ダイアログ ボックスを閉じます。

    これで、Sine Wave ブロックを使用して、各フレーム 64 サンプルの 3 チャネルの信号が作成されました。この手順の残りの部分では、これらの 3 つの正弦波を合算する方法を示します。

  8. Matrix Sum ブロックをダブルクリックします。[加算範囲] パラメーターを [指定した次元] に設定し、[次元] パラメーターを [2] に設定します。[OK] をクリックします。

  9. モデルのツールストリップの [デバッグ] タブで、[情報のオーバーレイ][信号の次元] を選択します。

  10. モデルを実行します。

    モデルは次の図のようになっているはずです。MATLAB® コマンド ラインで「ex_usingsinwaveblkfb」と入力してモデルを開くこともできます。

    Matrix Sum ブロックによって 3 つの信号が点単位で合計されます。その後、MATLAB ワークスペースにエクスポートされます。

  11. MATLAB コマンド ラインで「plot(yout(1:100))」と入力します。

    プロットは次の Figure のようになるはずです。

この Figure は、3 つの正弦波の和の部分を表しています。これで、3 チャネルの信号のチャネルの合算が完了し、結果を Figure ウィンドウに表示しました。

Signal From Workspace ブロックを使用した信号の作成

フレームベースの処理を使用すると、シミュレーションの実行時間が短くなり、モデルのパフォーマンスを大幅に改善できます。このトピックでは、Signal From Workspace ブロックを使用して、サンプル周期が 1 秒、フレーム周期が 4 秒、フレーム サイズが 4 サンプルの 2 チャネルの信号を作成する方法を説明します。

  1. 新しい Simulink モデルを作成します。

  2. Sources ライブラリから Signal From Workspace ブロックをクリックしてモデルにドラッグします。

  3. Simulink Sinks ライブラリから To Workspace ブロックをクリックしてモデルにドラッグします。

  4. 2 つのブロックを接続します。

  5. Signal From Workspace ブロックをダブルクリックし、ブロック パラメーターを次のように設定します。

    • Signal = [1:10; 1 1 0 0 1 1 0 0 1 1]'

    • Sample time = 1

    • Samples per frame = 4

    • Form output after final data value by = Setting to zero

    これらのパラメーターに基づいて、Signal From Workspace ブロックは、サンプル周期が 1 秒、フレーム周期が 4 秒、フレーム サイズが 4 サンプルの 2 チャネルの信号を出力します。ブロックによる信号出力後の後続の出力は、いずれも値がゼロになります。2 つのチャネルの値は次のようになります。

    • チャネル 1: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0,...

    • チャネル 2: 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,...

  6. [OK] をクリックして、これらのパラメーターを保存し、ダイアログ ボックスを閉じます。

  7. モデルのツールストリップの [デバッグ] タブで、[情報のオーバーレイ][信号の次元] を選択します。

  8. モデルを実行します。

    次の図は、モデルのシミュレーション時の動作をグラフィカルに表現したものです。MATLAB コマンド ラインで「ex_usingsfwblkfb」と入力してモデルを開くこともできます。

  9. MATLAB コマンド ラインで「yout」と入力します。

    MATLAB コマンド ラインで次の出力が表示されます。

    yout =
    
         1     1
         2     1
         3     0
         4     0
         5     1
         6     1
         7     0
         8     0
         9     1
        10     1
         0     0
         0     0
    

各チャネルの終わりにゼロが追加されていることに注意してください。これで、2 チャネルの信号の作成が完了し、MATLAB ワークスペースにエクスポートされました。

関連するトピック