最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

MATLAB へのデータのエクスポート

To Workspace ブロックの使用

この節では、シミュレーション結果を詳細に解析できるようにするため、Simulink® モデルから MATLAB® ワークスペースへデータを送る方法について説明します。

DSP System Toolbox™ /Sinks ライブラリにある To Workspace ブロックを使用すると、MATLAB ワークスペースへデータをベクトルとして送ることができます。たとえば、ハミング符号を使用して誤り率を減らすの節で説明されているハミング符号モデルから誤り率データを送ることができます。To Workspace ブロックをモデルに挿入するには、次の手順に従います。

  1. このモデルを開くには、MATLAB プロンプトで doc_hamming を入力します。

  2. To Workspace ブロックを追加するには、まずモデル ウィンドウに「to workspace」の名前の入力をして、To Workspace ブロックを DSP System Toolbox /Sinks ライブラリから選択します。図のように接続します。

ヒント

1 つ以上の To Workspace ブロックを使用できます。To Workspace を DSP System Toolbox / Sinks ライブラリから必ず選択します。

To Workspace ブロックの設定

To Workspace ブロックを設定するには、次の手順に従います。

  1. ブロックをダブルクリックして、ダイアログ ボックスを開きます。

  2. [変数名] フィールドに hammcode_BER と入力します。

  3. [データ点の制限] フィールドに 1 と入力します。これは出力ベクトルをシミュレーションの最終タイム ステップの値に制限します。

  4. [OK] をクリックします。

シミュレーションを実行すると、モデルは Error Rate Calculation ブロックの出力をワークスペースへ、hamming_BER という名前のサイズ 3 のベクトルとして送ります。このベクトルのエントリは Error Rate Display ブロックに示されるものと同じです。

ワークスペース内での誤り率データの表示

シミュレーションの実行後、MATLAB プロンプトで次のコマンドを入力することにより、To Workspace ブロックの出力を表示できます。

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 ブロックで作成されたエラー ベクトルをワークスペースに送ります。この例は、次の図に示されています。

  1. MATLAB コマンド ラインで doc_channel を入力してopen the starter model

  2. Binary Symmetric Channel ブロックをダブルクリックして、そのダイアログ ボックスを開き、[Output error vector] を選択します。これで、エラー データ用の出力端子が作成されます。

  3. ブロックを移動して、Hamming Encoder および Hamming Decoder ブロックを挿入できるようにします。それらを探すには、モデル ウィンドウで Hamming を入力して起動します。表示されているオプションから選択します。これらの Hamming EncoderHamming Decoder ブロックは、Communications Toolbox™ /誤差検出と修正 /Block サブライブラリにあります。

  4. 前の図に示したように、3 つの To Workspace ブロックをモデル ウィンドウに追加し、それらを接続します。

    ヒント

    1 つ以上の To Workspace ブロックを使用できます。To Workspace を DSP System Toolbox / Sinks ライブラリから必ず選択します。

  5. 左の To Workspace ブロックをダブルクリックします。

    • ブロックのダイアログ ボックスの [変数名] フィールドに Tx と入力します。ブロックは送信信号をワークスペースに、Tx という名前の配列で送ります。

    • [Save 2-D signals as] フィールドで、[3-D array (concatenate along third dimension)] を選択します。これにより、各フレームは、配列 Tx の別々の列に保持されます。

    • [OK] をクリックします。

  6. 中央の To Workspace ブロックをダブルクリックします。

    • [変数名] フィールドに errors と入力します。

    • [Save 2-D signals as] フィールドで、[3-D array (concatenate along third dimension)] を選択します。これにより、各フレームは、配列 Tx の別々の列に保持されます。

    • [OK] をクリックします。

  7. 右の To Workspace ブロックをダブルクリックします。

    • [変数名] フィールドに Rx と入力します。

    • [Save 2-D signals as] フィールドで、[3-D array (concatenate along third dimension)] を選択します。これにより、各フレームは、配列 Tx の別々の列に保持されます。

    • [OK] をクリックします。

ワークスペース内での信号と誤りデータの表示

シミュレーションの実行後、データの個々のフレームを表示できます。たとえば、Tx の 10 番目のフレームを表示するには、MATLAB プロンプトで次のように入力します。

Tx(:,:,10)

これは、メッセージ ワードの長さに対応する、長さ 4 の列ベクトルを返します。通常、Tx とだけ入力することはしません。こうすると送信信号全体が表示され、膨大になるからです。

エラーの対応フレームを表示するには、次のように入力します。

errors(:,:,10)

これは、符号語の長さに対応する、長さ 7 の列ベクトルを返します。

送信信号の 1 番目から 5 番目までのフレームを表示するには、次のように入力します。

Tx(:,:,1:5)

信号とエラー データの解析

MATLAB を使用してシミュレーションのデータを解析できます。たとえば、送信データと受信データの差異を識別するには、次のよう入力します。

diffs = Tx~=Rx;

ベクトル diffs は、ベクトル Tx とベクトル Rx の XOR です。diffs の A 1 は TxRx とがその位置で異なっていることを示します。

次の MATLAB コマンドにより、間違って復号化されたメッセージ ワードに対応するフレームのインデックスを判断できます。

error_indices = find(diffs);

ベクトル not_equal の A 1 は TxRx との対応するフレーム間で少なくとも 1 つ差異があることを示します。ベクトル error_indices には、TxRx とが異なるインデックスが格納されています。間違って復号化された 1 番目のワードを表示するには、次のように入力します。

Tx(:,:,error_indices(1))

エラーの対応フレームを表示するには、次のように入力します。

errors(:,:,error_indices(1))

このデータを解析して、復号化の間違いにつながるエラー パターンを判断します。