Main Content

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

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

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

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

フレームベースの処理用のマルチチャネル信号

複数の独立した信号に対して同じ演算を実行する場合、それらの信号をマルチチャネル信号にグループ化できます。たとえば、同じ直接型 II 転置フィルターを使用して 4 つの独立した信号それぞれをフィルター処理する必要がある場合、それらの信号をマルチチャネル信号に統合し、その信号を単一の Biquad Filter ブロックに接続できます。[入力処理] パラメーターを [チャネルとしての列 (フレーム ベース)] に設定すると、ブロックは入力の各列をチャネルとして扱います。その後、ブロックは各チャネルにフィルターを個別に適用します。

サイズが M 行 N 列の行列は、N チャネル、フレーム サイズ M の信号を表します。フレーム レートとフレーム サイズが同じ複数の個別の信号を、Simulink® Matrix Concatenate (Simulink) ブロックを使用して単一のマルチチャネル信号に統合できます。同じ方法で個別の信号を既存のマルチチャネル信号に追加することもできます。

このトピックでは、Sine Wave ブロックと Signal From Workspace ブロックを使用して、フレームベースの処理用の信号を作成する方法を示します。Matrix Concatenate ブロックを使用してこれらの信号を統合できます。この信号を受け取るブロックは、信号に対して、[入力処理] パラメーターに基づいてサンプルベースの処理またはフレームベースの処理を実装します。

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

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

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

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

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

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

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

  • 振幅 = [1 3 2]

  • 周波数 = [100 250 500]

  • サンプル時間 = 1/5000

  • フレームあたりのサンプル数 = 64

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

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

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

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

モデルのツールストリップの [デバッグ] タブで、[情報のオーバーレイ] の下にある [信号の次元] をクリックします。

モデルを実行します。

モデルはこの図のようになっているはずです。同等のモデル ex_usingsinwaveblkfb を開くこともできます。

Matrix Sum ブロックは 3 つの信号を点単位で合計し、その合計を MATLAB ワークスペースにエクスポートします。

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 ブロックをダブルクリックし、ブロック パラメーターを次のように設定します。

  • 信号 = [1:10; 1 1 0 0 1 1 0 0 1 1]'

  • サンプル時間 = 1

  • フレームあたりのサンプル数 = 4

  • 最終データ値の後の出力フォーム = 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,...

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

モデルのツールストリップの [デバッグ] タブで、[情報のオーバーレイ] の下にある [信号の次元] をクリックします。

モデルを実行します。

この図は、モデルのシミュレーション時の動作をグラフィカルに表現したものです。同等のモデル ex_usingsfwblkfb を開くこともできます。

MATLAB コマンド ラインで yout と入力します。これは、MATLAB コマンド ラインでの出力です。ブロックは、各チャネルの最後にゼロを追加します。これで、2 チャネルの信号が正常に作成され、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

Matrix Concatenate ブロックを使用した信号の統合

Matrix Concatenate ブロックを使用して、個々の信号をより大きい次元の信号に統合できます。信号を統合するには、すべての信号のフレーム レートとフレーム サイズが同じでなければなりません。

この例では、Matrix Concatenate ブロックが 4 行 2 列と 4 行 1 列の信号を統合して 4 行 3 列の信号を形成し、4 行 3 列の信号を 2 つ統合して 4 行 6 列の信号を形成します。

モデルを開いて実行する。

モデル内のすべての Signal From Workspace ブロックで、[サンプル時間] パラメーターが 1 に設定され、[フレームあたりのサンプル数] パラメーターが 4 に設定されています。Signal From Workspace ブロックが出力する信号のフレーム サイズは 4 です。最初の 2 つの Matrix Concatenate ブロックは、4 行 2 列と 4 行 1 列の信号を 2 番目の次元で連結して 4 行 3 列の信号を形成します。3 番目の Matrix Concatenate ブロックは、2 つの 4 行 3 列の信号を 2 番目の次元で連結して 4 行 6 列のサイズの信号を出力します。

4 行 6 列の信号をブロックに入力して [入力処理] パラメーターを Columns as channels (frame based) に設定した場合、ブロックはフレームベースの処理を実行します。フレームベースの処理モードでは、信号の各列がチャネル (フレーム) となり、ブロックは一度に 1 フレームずつ信号データを処理します。

関連するトピック