このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
AWGN Channel
ホワイト ガウス ノイズの入力信号への付加

ライブラリ:
Communications Toolbox /
Channels
説明
AWGN Channel ブロックは入力信号にホワイト ガウス ノイズを付加します。サンプル時間を入力信号から継承します。
例
Simulink での LLR と硬判定復調
このモデルでは、畳み込み符号化された通信リンクで、硬判定復調の代わりに対数尤度比 (LLR) を使用すると、BER 性能が向上することを示します。
この例の MATLAB® バージョンについては、対数尤度比 (LLR) 復調を参照してください。
システム設定
このモデル例では、1 つの送信側、1 つの AWGN チャネル、および 3 つの受信側をもつ、畳み込み符号化された通信システムをシミュレートします。畳み込み符号化器の符号化率は 1/2 です。システムでは 16-QAM 変調を採用しています。変調信号は加法性ホワイト ガウス ノイズ チャネルを通過します。一番上の受信側は、硬判定復調を行うように設定されているビタビ復号化器と組み合わせて、硬判定復調を行います。2 番目の受信側には、対数尤度比 (LLR) を計算するように構成されている復調器があり、3 ビットの量子化器を使用して量子化されます。最適な性能を得るには、量子化レベルがノイズ分散に依存していることはよく知られています [2]。量子化器の正確な境界は、ここで経験的に調べます。軟判定復号化を行うように設定されているビタビ復号化器は、これらの量子化された値を処理します。復調器によって計算された LLR 値に -1 を乗算し、ビタビ復号化器で使用する適切な量子化器インデックスに割り当てます。LLR を計算するには、入力時にわかっているノイズ分散を復調器に指定しなければなりません。3 番目の受信側には、非量子化モードで設定されているビタビ復号化器によって処理される LLR を計算する復調器が含まれています。各受信機の BER 性能が計算され、表示されます。
modelName = 'commLLRvsHD';
open_system(modelName);
システム シミュレーションと可視化
さまざまな情報ビットの Eb/No 値にわたって、このシステムをシミュレートします。コード ビットおよびマルチ ビットのシンボルについてこれらの Eb/No 値を調整して、AWGN ブロックおよび Rectangular QAM Baseband Demodulator ブロックに必要なノイズ分散値を取得します。Eb/No 値ごとの BER 結果を収集し、結果を可視化します。
EbNo = 2:0.5:8; % information rate Eb/No in dB codeRate = 1/2; % code rate of convolutional encoder nBits = 4; % number of bits in a 16-QAM symbol Pavg = 10; % average signal power of a 16-QAM modulated signal snr = EbNo - 10*log10(1/codeRate) + 10*log10(nBits); % SNR in dB noiseVarVector = Pavg ./ (10.^(snr./10)); % noise variance % Initialize variables for storing the BER results ber_HD = zeros(1,length(EbNo)); ber_SD = zeros(1,length(EbNo)); ber_LLR = zeros(1, length(EbNo)); % Loop over all noiseVarVector values for idx=1:length(noiseVarVector) noiseVar = noiseVarVector(idx); %#ok<NASGU> sim(modelName); % Collect BER results ber_HD(idx) = BER_HD(1); ber_SD(idx) = BER_SD(1); ber_LLR(idx) = BER_LLR(1); end % Perform curve fitting and plot the results fitBER_HD = real(berfit(EbNo,ber_HD)); fitBER_SD = real(berfit(EbNo,ber_SD)); fitBER_LLR = real(berfit(EbNo,ber_LLR)); semilogy(EbNo,ber_HD,'r*', ... EbNo,ber_SD,'g*', ... EbNo,ber_LLR,'b*', ... EbNo,fitBER_HD,'r', ... EbNo,fitBER_SD,'g', ... EbNo,fitBER_LLR,'b'); legend('Hard Decision Decoding', ... 'Soft Decision Decoding','Unquantized Decoding'); xlabel('Eb/No (dB)'); ylabel('BER'); title('LLR vs. Hard Decision Demodulation with Viterbi Decoding'); grid on;
このシステムをさらに実験するには、別の変調タイプを試してください。このシステムでは、より高速で誤りを訂正するためバイナリ マッピング方式の変調スキームを使用しますが、グレイ マッピング方式のコンスタレーションの方が BER 性能が高いことがよく知られています。変調器および復調器のブロック内で、さまざまなコンスタレーション順序オプションで実験します。近似 LLR を計算するように復調器ブロックを構成して、硬判定復調および LLR と比較した BER 性能の違いを調べます。さまざまな Eb/No 値で実験してみます。さらに、変調スキームと Eb/No 値についてさまざまな量子化器の境界を調べます。
Simulink でのデータフローの使用
この例では、Dataflow Subsystem の [領域] パラメーターをデータフローに設定することで、データ駆動型の実行を使用するように構成できます。データフローを使用して、領域内のブロックは、Simulink® のサンプル タイミングではなく使用可能なデータに基づいて実行します。Simulink はシステムをコンカレント スレッドに自動的に分割します。この自動分割はシミュレーションを高速化し、データ スループットを増やします。データフローと、複数のスレッドを使用してこの例を実行する方法の詳細については、比較する復調タイプのマルチコア シミュレーションを参照してください。
% Cleanup close_system(modelName,0); clear modelName EbNo codeRate nBits Pavg snr noiseVarVector ... ber_HD ber_SD ber_LLR idx noiseVar fitBER_HD fitBER_SD fitBER_LLR;
参考文献
[1] J. L. Massey, "Coding and Modulation in Digital Communications", Proc.Int. Zurich Seminar on Digital Communications, 1974
[2] J. A. Heller, I. M. Jacobs, "Viterbi Decoding for Satellite and Space Communication", IEEE® Trans.Comm. Tech. vol COM-19, October 1971
Simulink を使用した AWGN チャネルのグレイ符号 M-PSK 変調エラー レート
この例では、doc_gray_code
を使用して、M-PSK 変調のビット エラー レート (BER) とシンボル エラー レート (SER) を計算します。AGWN における M-PSK 変調の理論上のエラー レート性能を、グレイ符号シンボル マッピングのエラー レート性能およびバイナリ符号シンボル マッピングのエラー レート性能と比較します。
Random Integer Generator ブロックはソースとして機能し、整数のシーケンスを生成します。Integer to Bit Converter ブロックは、各整数を対応するバイナリ表現に変換します。doc_gray_code
モデルのM-PSK Modulator Basebandブロックは、次を行います。
[0, (M - 1] の範囲の整数を表すバイナリ値の入力を受け入れる。ここで、M は変調次数です。
グレイ符号の順序付けを使用して、バイナリ表現をコンスタレーション点に割り当てる。
[0, (2
(M - 1) / M)] の範囲の等間隔の位相をもつ、単位振幅の複素フェーザ出力を生成する。
AWGN Channel ブロックは、変調されたデータにホワイト ガウス ノイズを付加します。M-PSK Demodulator Baseband ブロックは、ノイズを含むデータを復調します。Bit to Integer Converter ブロックは、各バイナリ表現を、対応する整数に変換します。次に、2 つの個別のError Rate Calculationブロックが、復調されたデータのエラー レートを計算します。"SER Calculation" というラベルの付いたブロックは整数データを比較してシンボル エラー レートの統計を計算し、"BER Calculation" というラベルの付いたブロックはビット データを比較してビット エラー レートの統計を計算します。Error Rate Calculation ブロックの出力は、計算されたエラー レート、観察された誤り数、および処理されたデータ量を含む 3 要素ベクトルになります。
シミュレーションの実行時間を短縮し、かつ Eb/N0 比が増加してもエラーの統計値が確実に安定するように、モデルは 100 個のエラーが発生するか 1e8 ビットが送信されるまで実行するように構成されています。
モデルは、コールバック関数 PreLoadFcn
を使用して、ブロック パラメーターの構成に使用する変数を初期化します。詳細については、モデル コールバック (Simulink)を参照してください。
エラー レート曲線の生成
関数
を使用して、AWGN における非差分 8-PSK の理論上の BER を Eb/N0 値の範囲にわたって計算します。グレイ符号シンボル マッピングを使用し、同じ範囲の Eb/N0 値にわたって berawgn
doc_gray_code
モデルをシミュレーションします。
"Constellation orders" パラメーターを Gray
ではなく Binary
に設定するように M-PSK Modulator Baseband ブロックと M-PSK Demodulator Baseband ブロックを変更して、グレイ符号化とバイナリ符号化を比較します。バイナリ符号シンボル マッピングを使用し、同じ範囲の Eb/N0 値にわたって doc_gray_code
モデルをシミュレーションします。
関数semilogy
を使用して結果をプロットします。グレイ符号システムは、バイナリ符号システムよりも優れたエラー レート性能を実現します。さらに、グレイ符号のエラー レートは、理論上のエラー レート統計と一致しています。
端子
入力
In — 入力データの信号
ベクトル | 行列
入力信号。NS 行 1 列のベクトルまたは NS 行 NC 列の行列として指定します。NS は、入力信号中のサンプルの数を示します。NC は、チャネル数を示します。これは、入力信号行列の列数で決まります。NS と NC はどちらも 1
にできます。
このブロックで、長さ NS のガウス ノイズがチャネルごとに異なる無作為の分布を使用して、それぞれの NC チャネルに追加されます。
データ型: double
| single
複素数のサポート: あり
Var — 加法性ホワイト ガウス ノイズの分散
正のスカラー | ベクトル
加法性ホワイト ガウス ノイズの分散。正のスカラーまたは 1 行 NC 列のベクトルとして指定します。NC は、チャネル数を示します。これは、入力信号行列の列数で決まります。詳細については、分散の直接または間接指定を参照してください。
依存関係
この端子を有効にするには、[モード] を [分散]
に設定し、[ノイズ分散ソース] を [入力端子]
に設定します。
データ型: double
出力
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
モード — 分散モード
S/N 比 (SNR)
(既定値) | Signal to noise ratio (Eb/No)
| Signal to noise ratio (Es/No)
| 分散
分散モード。[S/N 比 (Eb/No)]
、[S/N 比 (Es/No)]
、[S/N 比 (SNR)]
、または [分散]
として指定します。詳細は、Eb/No、Es/No、および SNR モード間の関係と分散の直接または間接指定を参照してください。
SNR (dB) — 信号強度のノイズ パワーに対する割合
10
(既定値) | スカラー | ベクトル
ノイズ パワーに対する信号強度の比 (dB 単位)。スカラーまたはベクトルで指定します。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[モード] を [S/N 比 (SNR)]
に設定します。
Eb/No (dB) — シンボルあたりの情報ビット エネルギーとノイズ パワー スペクトル密度の比
10
(既定値) | スカラー | ベクトル
ノイズ パワー スペクトル密度に対する、シンボルあたりの情報ビット エネルギーの比 (dB 単位)。スカラーまたはベクトルで指定します。情報ビット エネルギーは、チャネル符号化なしの振幅です。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[モード] を [S/N 比 (Eb/No)]
に設定します。
Es/No (dB) — シンボルあたりの情報シンボル エネルギーとノイズ パワー スペクトル密度の比
10
(既定値) | スカラー | ベクトル
ノイズ パワー スペクトル密度に対する、シンボルあたりの情報シンボル エネルギーの比 (dB 単位)。スカラーまたはベクトルで指定します。情報シンボル ビット エネルギーは、チャネル符号化なしの振幅です。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[モード] を [S/N 比 (Es/No)]
に設定します。
Number of bits per symbol — 各入力シンボルあたりのビット数
1 (既定値) | スカラー | ベクトル
Input signal power, referenced to 1 ohm (watts) — 入力の平均二乗電力
1
(既定値) | スカラー | ベクトル
Samples per symbol — シンボルあたりのサンプル数
1
(既定値) | 正のスカラー | ベクトル
シンボルあたりのサンプル数 (サンプル単位)。正のスカラーまたはベクトルとして指定します。
依存関係
このパラメーターを有効にするには、[モード] を [S/N 比 (Eb/No)]
または [S/N 比 (Es/No)]
に設定します。
Noise variance source — Noise variance source
Parameter
(既定値) | 入力端子
ノイズ分散ソース。[パラメーター]
または [入力端子]
として指定します。詳細については、分散の直接または間接指定を参照してください。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[モード] を [分散]
に設定します。
Noise variance — ホワイト ガウス ノイズの分散
1
(既定値) | スカラー | ベクトル
ホワイト ガウス ノイズの分散。スカラーまたはベクトルとして指定します。詳細については、分散の直接または間接指定を参照してください。
調整可能: Yes
依存関係
この端子を有効にするには、[モード] を [分散]
に設定し、[ノイズ分散ソース] を [パラメーター]
に設定します。
乱数ソース — 乱数ソース
グローバル ストリーム
(既定値) | シードあり mt19937ar
乱数ソース。[グローバル ストリーム]
または [シードあり mt19937ar]
として指定します。
調整可能: Yes
Initial seed — ノイズ ジェネレーター初期シード
67
(既定値) | 正のスカラー | ベクトル
mt19937ar アルゴリズムのノイズ ジェネレーター初期シード。正のスカラーまたは 1 行 NC 列のベクトルとして指定します。
入力信号が複素数の場合、ブロックは、次のようにランダム データを作成します。
randData
=randn
(2*NS,NC)noise
=randData
(1:2:end) + 1i(randData
(2:2:end))
各 DLL ビルドに、異なるシード値を指定することもできます。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[乱数ソース] を [シードあり mt19937ar]
に設定します。
シミュレーション実行方法 — 実行するシミュレーションのタイプ
コード生成
(既定値) | インタープリター型実行
実行するシミュレーションのタイプ。[コード生成]
または [インタープリター型実行]
として指定します。
コード生成
— 生成された C コードを使用してモデルをシミュレートします。シミュレーションの初回実行時、Simulink は対象ブロックの C コードを生成します。このモデルは、モデルが変更されない限り以降のシミュレーションで C コードを再利用します。このオプションを使用すると、シミュレーションの起動時間は長くなりますが、以降のシミュレーションの速度は[インタープリター型実行]
オプションを使用した場合よりも速くなります。インタープリター型実行
— MATLAB® インタープリターを使用してモデルをシミュレートします。このオプションを使用すると、起動時間が短縮されますが、以降のシミュレーションの速度は[コード生成]
オプションを使用した場合よりも遅くなります。このモードで、ブロックのソース コードをデバッグできます。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
ヒント
ノーマル モード、アクセラレータ モード、またはラピッド アクセラレータ モードでパラメーターを調整できます。
特に指定がない限り、パラメーターは "調整不可能" です。
調整不可能なパラメーターについて Simulink Coder™ ラピッド シミュレーション (RSIM) ターゲットを使用して RSIM 実行可能ファイルを作成する場合、モデルを再コンパイルすることなく、それらの値を変更することはできません。
パラメーターが "調整可能" の場合、その値をいつでも変更できます。これは、異なる量のノイズでシミュレーションを複数回 (複数のコンピューターなどで) 実行するモンテ カルロ シミュレーションの場合に便利です。
アルゴリズム
Eb/No、Es/No、および SNR モード間の関係
符号化されていない複素数の入力信号の場合、AWGN Channel ブロックは次の式に従って、Eb/N0、Es/N0、および SNR に関連します。
Es/N0 = (Tsym/Tsamp) × SNR
Es/N0 = Eb/N0 + 10log10(k) in dB
Es は、ジュール単位の信号エネルギーを示します。
Eb は、ジュール単位のビット エネルギーを示します。
N0 は、ノイズ パワー スペクトル密度 (watts/Hz) を示します。
Tsym/Tsamp は、[シンボルあたりのサンプル数] パラメーターの値と同じです。
Tsym は、信号のシンボル周期 (秒) です。
Tsamp は、ブロックの継承されたサンプル時間 (秒) を示します。
k は入力シンボルあたりの情報ビット数 [シンボルあたりのビット数] を示します。
実際の信号入力の場合、AWGN Channel ブロックは次の式に従って、Es/N0 および SNR に関連します。
Es/N0 = 0.5 (Tsym/Tsamp) × SNR
メモ
すべての電力値は公称インピーダンス 1 オームを想定しています。
実数のケースの式は 2 の係数による複素数のケースに対応する式とは異なることに注意してください。特に、オブジェクトは、実数の入力信号の場合は N0/2 watts/Hz、複素信号の場合は N0 watts/Hz のノイズ パワー スペクトル密度を使用します。
詳細については、AWGN チャネル ノイズ レベルを参照してください。
分散の直接または間接指定
AWGN Channel によって生成されるノイズの分散を直接指定するには、[モード] を [分散]
として指定します。[ノイズ分散ソース] を指定する場合、次のようにします。
分散を指定する場合、次のようになります。
スカラーとして指定する場合、すべての信号チャネルは無相関ですが、同じ分散を共有します。
入力信号内のチャネル数と同じ長さのベクトルとして指定する場合、各要素は対応する信号チャネルの分散を表します。
メモ
AWGN Channel ブロックに複素数の入力信号を割り当てる場合、計算または指定された分散をもつ複素数で平均 0 のガウス ノイズが追加されます。複素数ノイズのそれぞれの直交成分の分散は計算または指定された値の半分です。
分散を間接的に指定する (ブロックで分散を計算する) には、次のように [モード] を指定します。
[Signal to noise ratio (Eb/No)]
、この場合ブロックはダイアログ ボックスで指定する次の数量から分散を計算します。Eb/No (dB)。ビットあたりのエネルギーとノイズ パワー スペクトル密度の比率
Input signal power, referenced to 1 ohm (watts)。ブロックの入力時のシンボルの実際の強度
[Signal to noise ratio (Es/No)]
、この場合ブロックはダイアログ ボックスで指定する次の数量から分散を計算します。Es/No (dB)。信号エネルギーとノイズ パワー スペクトル密度の比率
Input signal power, referenced to 1 ohm (watts)。ブロックの入力時のシンボルの実際の強度
[Signal to noise ratio (SNR)]
、この場合ブロックはダイアログ ボックスで指定する次の数量から分散を計算します。SNR (dB)。信号強度のノイズ パワーに対する割合
Input signal power, referenced to 1 ohm (watts)。ブロックの入力時のサンプルの実際の強度
AWGN Channel ブロックでシンボル周期を変更すると、サンプルごとに加えられるノイズの分散に影響し、最終的なエラー レートが変わる原因ともなります。
ヒント
モデルのシンボル周期に等しいシンボル周期を選択します。この値は、シンボルの構成要素および適用されているオーバーサンプリングによって決まります。たとえば、シンボルは、3 ビットあり、4 でオーバーサンプリングされている場合があります。詳細については、AWGN チャネル ノイズ レベルを参照してください。
参照
[1] Proakis, John G. Digital Communications. 4th Ed. McGraw-Hill, 2001.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入R2023a: 可変サイズのサポート
このサポートによって、シミュレーションでブロックを実行するたびに入力信号の長さを変えられるようになりました。
R2023a: 乱数発生器の更新
AWGN Channel ブロックにおいて乱数発生器 (RNG) のソースが更新され、Global stream
または mt19937ar with seed
を選択できるようになりました。
新しい RNG は、乱数の統計的特性が向上しています。R2023a より前に作成されたシミュレーションでは、ブロックが既定で以前の RNG (Ziggurat メソッド - V5 RANDN アルゴリズム) を使用する従来のモードになります。このモードでは、ブロックが Random Source ブロックを使用してノイズを生成します。Ziggurat メソッド (V5 RANDN アルゴリズム) を使用して、乱数が生成されます。シミュレーションを再実行するたびにブロックは同じ初期シードを再利用するため、シミュレーションを実行するたびにこのブロックは同じ信号を出力します。統計的特性を向上させるため、AWGN Channel ブロックを使用する R2023a より前のシミュレーションに対して [モデルの更新] を実行することを推奨します。
R2023a: コード生成
コード生成が既定で有効になっています。詳細については、シミュレーション実行方法を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)