LDPC エンコーダーとデコーダーを使用する単純なシステムから BER データを Communication Toolbox の BER ツールにエクスポートし、BER 曲線をプロットしたいと考えています。
LDPC commdvbs2.mdl を使用してサンプル システムを変更しました。これは [ヘルプ] メニューの [デモ] > [Simulink デモ] > [アプリケーション固有の例] > [LDPC コーディングを含む DVB-S.2 リンク] で利用できます。
簡単にするために、General Block Interleaver と General Block Deinterleaver を削除しました。BCH Encoder と BCH Decoder も削除しました。BCH エンコーダーの不足を補うために、BBFRAME バッファー ブロック内のゼロ パッドを変更して、列サイズをdvb.BCHCodewordLength
ではなく にしdvb.BCHMessageLength
ました。
AWGN ブロックを次のパラメーターを持つように変更しました。 モード: Signal to noise ratio (Eb/No)
Eb/No (db):シンボルdvb.EsNodB / log2(dvb.BitsPerSymbol)
あたりのビット数:dvb.BitsPerSymbol
シンボル周期 (s):dvb.BitPeriod * dvb.BitsPerSymbol
これまでのところ、これはすべて機能します。モデル パラメーターを変更して Es/No が 1 dB になるようにしても、BER は 0、PER は 0 のままです。
しかし今、モデルから BER を取得して BER ツールにプロットする際に問題が発生しています。「To Workspace」ブロックを追加し、BER Error Rate Calculator の出力をそれに接続しました。変数に名前を付け、ber_out
制限データ ポイントを last に設定しました1
。
次に、AWGN ブロックの Eb/No を次のように変更します。EbNo
これは、BER ツールが BER をプロットするためにステップ スルーするベクトルです。(これらの変更を新しい名前でモデルに保存しました。)
BER ツールで、[モンテカルロ] タブに移動します。Eb/No の範囲を次のように設定しました0:0.2:2
。BER 変数名を次のように設定しますber_out
。
シミュレーションを実行すると、何もプロットされません。診断ツールがポップアップし、次の 2 つのメッセージが表示されます。
ソース: commdvbs2_noBCH_noInterleave_EbNo_BERTool。block_diagram 'commdvbs2_noBCH_noInterleave_EbNo_BERTool' の 'StopFcn' コールバックを評価中にエラーが発生しました。出典:不明。ベクトルは同じ長さでなければなりません。
私は何を間違っていますか?
(MATLAB のバージョンは 2012a です。)