MATLAB へのデータのエクスポート
To Workspace ブロックの使用
この節では、シミュレーション結果を詳細に解析できるようにするため、Simulink® モデルから MATLAB® ワークスペースへデータを送る方法について説明します。
To Workspace (Simulink) ブロックを使用すると、MATLAB ワークスペースへデータをベクトルとして送ることができます。たとえば、ハミング符号を使用してエラー レートを減らすの節で説明されているハミング符号モデルからエラー レート データを送ることができます。To Workspace (Simulink) ブロックをモデルに挿入するには、次の手順に従います。
To Workspace (Simulink) ブロックを追加するには、まずモデル ウィンドウで 'to workspace' と名前を入力し、To Workspace ブロックを選択します。図のように接続します。
ヒント
To Workspace ブロックを DSP System Toolbox™ / Sinks サブライブラリから選択します。詳細については、通信システム シミュレーション用の To Workspace ブロックの構成を参照してください。
To Workspace ブロックの設定
To Workspace (Simulink) ブロックを設定するには、次の手順に従います。
ブロックをダブルクリックして、ダイアログ ボックスを開きます。
[変数名] フィールドに
hammcode_BER
と入力します。[直近のデータ点数に制限] フィールドに
1
と入力します。これは出力ベクトルをシミュレーションの最終タイム ステップの値に制限します。[保存形式] が
[配列]
に設定されていることを確認します。[OK] をクリックします。
シミュレーションを実行すると、モデルは Error Rate Calculation ブロックの出力をワークスペースへ、hamming_BER
という名前のサイズ 3 のベクトルとして送ります。このベクトルのエントリは Error Rate Display ブロックに示されるものと同じです。
ワークスペース内でのエラー レート データの表示
シミュレーションの実行後、MATLAB プロンプトで次のコマンドを入力することにより、To Workspace (Simulink) ブロックの出力を表示できます。
format short e hammcode_BER
ベクトルの出力は次のようになります。
hammcode_BER =
5.4066e-003 1.0000e+002 1.8496e+004
コマンド format short e
は、ベクトルのエントリを指数形式で表示します。エントリの内容は以下のようになります。
1 番目のエントリは、エラー レートです。
2 番目のエントリは、誤りの合計数です。
3 番目のエントリは、比較の合計回数です。
ワークスペースへの信号と誤りデータの送信
ハミング符号の誤り訂正パフォーマンスを解析するには、送信信号、受信信号、および Binary Symmetric Channel ブロックで作成されたエラー ベクトルをワークスペースに送ります。この例は、次の図に示されています。
ブロックを組み合わせてこのモデルを作成します。
Binary Symmetric Channel ブロックをダブルクリックして、そのダイアログ ボックスを開き、[Output error vector] を選択します。これで、エラー データ用の出力端子が作成されます。
ブロックを移動して、Hamming Encoder および Hamming Decoder ブロックを挿入できるようにします。それらを探すには、モデル ウィンドウで
Hamming
を入力して起動します。表示されているオプションから選択します。これらの Hamming Encoder と Hamming Decoder ブロックは、Communications Toolbox™ /誤差検出と修正 /Block サブライブラリにあります。前の図に示したように、3 つの To Workspace (Simulink) ブロックをモデル ウィンドウに追加し、それらを接続します。
ヒント
To Workspace ブロックを DSP System Toolbox / Sinks サブライブラリから選択します。詳細については、通信システム シミュレーション用の To Workspace ブロックの構成を参照してください。
左の To Workspace (Simulink) ブロックをダブルクリックします。
[Variable name] パラメーターを
Tx
に設定します。ブロックは送信信号をワークスペースに、Tx
という名前の配列で送ります。各フレームを配列
Tx
の別々の列に保存するには、[Save 2-D signals as] パラメーターを[3-D array (concatenate along third dimension)]
に設定します。[OK] をクリックします。
中央の To Workspace (Simulink) ブロックをダブルクリックします。
[Variable name] パラメーターを
errors
に設定します。各フレームを配列
errors
の別々の列に保存するには、[Save 2-D signals as] パラメーターを[3-D array (concatenate along third dimension)]
に設定します。[OK] をクリックします。
右の To Workspace (Simulink) ブロックをダブルクリックします。
[Variable name] パラメーターを
Rx
に設定します。各フレームを配列
Rx
の別々の列に保存するには、[Save 2-D signals as] パラメーターを[3-D array (concatenate along third dimension)]
に設定します。[OK] をクリックします。
ワークスペース内での信号と誤りデータの表示
シミュレーションの実行後、データの個々のフレームを表示できます。たとえば、Tx
の 10 番目のフレームを表示するには、MATLAB プロンプトで次のように入力します。
Tx(:,:,10)
これは、メッセージ ワードの長さに対応する、長さ 4 の列ベクトルを返します。信号は通常、非常に大きなものです。そのため、信号名を単独で入力して送信信号全体を表示しても意味がありません。
エラーの対応フレームを表示するには、次のように入力します。
errors(:,:,10)
これは、コードワードの長さに対応する、長さ 7 の列ベクトルを返します。
送信信号の 1 番目から 5 番目までのフレームを表示するには、次のように入力します。
Tx(:,:,1:5)
信号とエラー データの解析
MATLAB を使用してシミュレーションのデータを解析できます。たとえば、送信データと受信データの差異を識別するには、次のよう入力します。
diffs = Tx ~= Rx;
ベクトル diffs
は、ベクトル Tx
とベクトル Rx
の XOR です。diffs
の A 1 は Tx
と Rx
とがその位置で異なっていることを示します。
次の MATLAB コマンドにより、間違って復号化されたメッセージ ワードに対応するフレームのインデックスを判断できます。
error_indices = find(diffs);
ベクトル error_indices
には、Tx
と Rx
とが異なるインデックスが格納されています。間違って復号化された 1 番目のワードを表示するには、次のように入力します。
Tx(:,:,error_indices(1))
エラーの対応フレームを表示するには、次のように入力します。
errors(:,:,error_indices(1))
このデータを解析して、復号化の間違いにつながるエラー パターンを判断します。