Main Content

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

comm.ThermalNoise

信号への熱ノイズの付加

説明

comm.ThermalNoise System object™ オブジェクトは、複素ベースバンド信号の熱ノイズの影響をシミュレートします。詳細については、アルゴリズムを参照してください。

熱ノイズを複素ベースバンド信号に付加するには、次のようにします。

  1. comm.ThermalNoise オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

noise = comm.ThermalNoise は受信機の熱ノイズ System object を作成します。このオブジェクトは、複素ベースバンド入力信号に熱ノイズを付加します。

noise = comm.ThermalNoise(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、SampleRate=2 は入力信号のサンプル レートを 2 に設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

ノイズ パワーを設定するメソッド。'Noise temperature''Noise figure' または 'Noise factor' で指定します。

受信機のノイズ温度。ケルビン単位で非負のスカラーとして指定します。ノイズ温度は通常、受信機を特徴付けるために使用されます。これは、入力ノイズ温度が変化する場合があり、290 K より低いことがよくあるためです。

調整可能: Yes

依存関係

このプロパティは NoiseMethod'Noise temperature' に設定した場合に適用されます。

データ型: double | single

ノイズ指数 (dB 単位)。非負のスカラーとして指定します。ノイズ指数は受信機のパフォーマンスを示し、アンテナの影響は含まれません。入力ノイズ温度 290 K に対してのみ定義されます。ノイズ指数はノイズ ファクターの dB に相当します。

調整可能: Yes

依存関係

このプロパティは NoiseMethod'Noise figure' に設定した場合に適用されます。

データ型: double | single

ノイズ ファクター。1 以上のスカラーとして指定します。ノイズ ファクターは受信機のパフォーマンスを示し、アンテナの影響は含まれません。入力ノイズ温度 290 K に対してのみ定義されます。ノイズ ファクターはノイズ指数の線形等価です。

調整可能: Yes

依存関係

このプロパティは NoiseMethod'Noise factor' に設定した場合に適用されます。

データ型: double | single

参照負荷 (オーム単位)。正のスカラーとして指定します。参照負荷の値は、信号レベルおよびノイズ パワー レベルに基づいて電圧レベルを計算するのに使用されます。

調整可能: Yes

データ型: double | single

サンプル レート (Hz 単位)。正のスカラーとして指定します。オブジェクトは、入力信号に付加されるノイズの分散を kT×SampleRate×ReferenceLoad として計算します。値 k はボルツマン定数で、T は、いずれかのノイズ メソッドによって明示的または黙示的に指定されるノイズ温度です。

データ型: double | single

290 K のアンテナ ノイズを入力信号に付加するオプション。logical 0 (false) または logical 1 (true) として指定します。290 K のアンテナ ノイズを付加するには、このプロパティを true に設定します。入力信号に適用される全ノイズは、回路ノイズとアンテナ ノイズの和です。

依存関係

このプロパティを有効にするには、NoiseMethod プロパティを 'Noise factor' または 'Noise figure' に設定します。

データ型: logical

使用法

説明

outsignal = noise(insignal) は、熱ノイズを複素ベースバンド入力信号 insignal に付加し、結果を outsignal で返します。

入力引数

すべて展開する

ベースバンド信号。複素数値のスカラー、NS 要素の列ベクトル、または NS 行 NC 列の行列として指定します。NS は、サンプルの数です。NC は、チャネルの数です。

データ型: double | single
複素数のサポート: あり

出力引数

すべて展開する

出力信号。入力信号と同じ長さとデータ型で、複素数値のスカラー、列ベクトル、または行列として返されます。

データ型: double | single
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

infoCharacteristic information about thermal noise object
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

ノイズ温度 290 K、サンプル レート 5 MHz で熱ノイズ オブジェクトを作成します。

thNoise = comm.ThermalNoise('NoiseTemperature',290,'SampleRate',5e6);

20 dBm の出力パワーで QPSK 変調データを生成します。

data = randi([0 3],1000,1);
modData = (10^((20-30)/20)) * pskmod(data,4,pi/4);

1000 m のリンク距離と 2 GHz の搬送波周波数を想定した自由空間パス損失で信号を減衰させます。

d = 1000;                    % m  
f = 2e9;                     % Hz
c = 3e8;                     % m/s 
fsl = (4*pi*d*f/c)^2;
rxData = modData/sqrt(fsl);

信号に熱ノイズを付加します。ノイズの多いコンスタレーションをプロットします。

noisyData = thNoise(rxData);
scatterplot(noisyData)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

ノイズ指数 5 dB、サンプル レート 10 MHz で熱ノイズ オブジェクトを作成します。290 K のアンテナ ノイズを含めます。

thermalNoise = comm.ThermalNoise('NoiseMethod','Noise figure', ...
    'NoiseFigure',5, ...
    'SampleRate',10e6, ...
    'Add290KAntennaNoise',true);

1 W の出力パワーで QPSK 変調データを生成します。

data = randi([0 15],1000,1);
modSig = qammod(data,16,'UnitAveragePower',true);

1 km のリンク距離と 5 GHz の搬送波周波数を想定した自由空間パス損失で信号を減衰させます。

d = 1000;                   % m
f = 5e9;                    % Hz
c = 3e8;                    % m/s
fsl = (4*pi*d*f/c)^2;
rxSig = modSig/sqrt(fsl);

信号に熱ノイズを追加し、そのコンスタレーションをプロットします。

noisySig = thermalNoise(rxSig);
scatterplot(noisySig)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

SNR を推定します。

mer = comm.MER;
snrEst1 = mer(rxSig,noisySig)
snrEst1 = 22.6611

ノイズ指数を 0 dB に減らして、結果の受信信号をプロットします。アンテナ ノイズが含まれているため、信号は完全にノイズなしにはなりません。

thermalNoise.NoiseFigure = 0;
noisySig = thermalNoise(rxSig);
scatterplot(noisySig)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

SNR を推定します。SNR は最初のケースより 5 dB 高くなりますが、これはノイズ指数の 5 dB の低下から予想されます。

snrEst2 = mer(rxSig,noisySig)
snrEst2 = 27.8658
snrEst2 - snrEst1
ans = 5.2047

マルチチャネル信号に熱ノイズを適用し、各チャネルのノイズ フロアがオブジェクト関数 info によって返されるノイズ フロアと同じであることを確認します。

comm.ThermalNoiseオブジェクトを作成します。

tn = comm.ThermalNoise
tn = 
  comm.ThermalNoise with properties:

         NoiseMethod: 'Noise temperature'
    NoiseTemperature: 290
       ReferenceLoad: 1
          SampleRate: 1

マルチチャネル信号に熱ノイズを適用し、各チャネルの信号の分散を計算します。

x = tn(zeros(100000,3,'like',1i)); 
10*log10(var(x))
ans = 1×3

 -203.9973 -203.9684 -203.9802

オブジェクト関数infoを使用して、受信機の熱ノイズ フロアを返します。

info(tn)
ans = struct with fields:
    NoiseFloor: -203.9752

アルゴリズム

無線受信機のパフォーマンスは、しばしばノイズ ファクターまたはノイズ指数で表されます。ノイズ ファクター F は入力の S/N 比 Si/Ni と出力の S/N 比 So/No の比率として定義され、次のようになります。

F=Si/NiSo/No.

受信機のゲイン G、受信機のノイズ パワー Nckt が与えられると、ノイズ ファクターは次のように表現できます。

F=Si/NiGSi/(Nckt+GNi)=Nckt+GNiGNi.

IEEE® はノイズ ファクターを定義する際に、入力のノイズ温度が T0 であると仮定しています。ここで、T0 = 290 K です。このとき、ノイズ ファクターは次のようになります。

F=Nckt+GNiGNi=GkBTckt+GkBT0GkBT0=Tckt+T0T0.

k はボルツマン定数です。B は信号帯域幅です。Tckt は受信機の等価入力ノイズ温度で、次のように表されます。

Tckt=T0(F1).

アンテナと受信機の全体的なノイズ温度 Tsys は次のようになります。

Tsys=Tant+Tckt,

ここで、Tant はアンテナのノイズ温度です。

ノイズ指数 NF はノイズ ファクターの dB 換算と等価であり、次のように表現できます。

NF=10log10(F).

ノイズ パワーは次のように表現できます。

N=kTB=V2/R,

ここで、V は次のように表現されるノイズ電圧です。

V2=kTBR,

また、R は参照負荷です。

拡張機能

バージョン履歴

R2012a で導入

すべて展開する