MATLAB ヘルプ センター
このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
S/N 比
r = snr(xi,y)
r = snr(x)
r = snr(x,fs,n)
r = snr(pxx,f,"psd")
r = snr(pxx,f,n,"psd")
r = snr(sxx,f,rbw,"power")
r = snr(sxx,f,rbw,n,"power")
r = snr(___,"aliased")
[r,noisepow] = snr(___)
snr(___)
r = snr(xi,y) は、信号 xi の大きさの 2 乗の和とノイズ y の大きさの 2 乗の和の比を計算し、この信号の S/N 比 (SNR) をデシベル単位で返します。
r
xi
y
r = mag2db(rssq(xi(:))/rssq(y(:))).
r = mag2db(rssq(xi(:))/rssq(y(:)))
mag2db
rssq
y の次元は xi と同じでなければなりません。入力信号が必ずしも正弦波ではなく、かつノイズが推定されている場合は、この形を使用します。
例
r = snr(x) は、実数値の正弦波入力信号 x の SNR を、dBc (搬送波に対するデシベル) 単位で返します。SNR は入力と同じ長さの修正ピリオドグラムを使用して決定されます。この修正ピリオドグラムでは、β = 38 のカイザー ウィンドウを使用します。結果から、基本波を含む最初の 6 つの高調波のパワーが除外されています。
x
r = snr(x,fs,n) は、レート fs でサンプリングされた実数の正弦波入力信号 x の SNR を dBc 単位で返します。計算からは、基本波を含めて最下位の n 個の高調波に含まれるパワーが除外されています。
fs
n
r = snr(pxx,f,"psd") では、入力 pxx を片側 PSD (パワー スペクトル密度) 推定として指定します。引数 f は、pxx の推定が発生する周波数のベクトルです。ノイズの計算結果からは、基本波を含む最初の 6 つの高調波のパワーが除外されています。
pxx
f
r = snr(pxx,f,n,"psd") では、SNR の計算時に除外する高調波の数 n を指定します。n の既定値は 6 で、この中には基本波が含まれます。
r = snr(sxx,f,rbw,"power") では、入力 sxx を実数信号の片側パワー スペクトルとして指定します。入力 rbw はそれについて各パワー推定が積分される分解能帯域幅です。
sxx
rbw
r = snr(sxx,f,rbw,n,"power") では、SNR の計算時に除外する高調波の数 n を指定します。n の既定値は 6 で、この中には基本波が含まれます。
r = snr(___,"aliased") では、ナイキスト範囲内にエイリアシングされた基本波の高調波が削除されます。このオプションは、正弦波入力信号がアンダーサンプリングされた場合に使用します。このオプションを指定しない場合、または "omitaliases" に指定した場合、関数は、ナイキスト範囲外にある基本周波数の高調波をノイズとして扱います。
"omitaliases"
[r,noisepow] = snr(___) はこの他に、信号の高調波以外の成分の全ノイズ パワーも返します。
noisepow
出力引数を設定せずに snr(___) を使用すると、現在の Figure ウィンドウに信号のスペクトルがプロットされ、主な特徴にラベルが付けられます。スペクトルの基本成分、DC 値、高調波およびノイズが、さまざまな色で描画されます。プロットの上に SNR と表示されます。この機能は、上記にリストした構文のうち、snr(xi,y) 以外のすべてで動作します。
snr(xi,y)
snr
すべて折りたたむ
10 kHz で 2 秒間サンプリングされる 20 ミリ秒の矩形パルスを生成します。
Tpulse = 20e-3; Fs = 10e3; t = -1:1/Fs:1; x = rectpuls(t,Tpulse);
S/N 比 (SNR) が 53 dB となるホワイト ガウス ノイズにパルスを組み込みます。再現可能な結果が必要な場合は、乱数発生器をリセットします。
rng default SNR = 53; y = randn(size(x))*std(x)/db2mag(SNR); s = x + y;
関数 snr を使用して、ノイズを含む信号の SNR を計算します。
pulseSNR = snr(x,y)
pulseSNR = 53.1255
信号の S/N 比 (SNR)、全高調波歪み (THD)、信号対ノイズおよび歪み比 (SINAD) を計算して比較します。
48 kHz でサンプリングされた正弦波信号を作成します。この信号には、周波数が 1 kHz で単位振幅をもつ基本波があります。また、振幅が 2/5 の 2 kHz の高調波と、分散が 0.1² の加法性ノイズも含まれています。
fs = 48e3; t = 0:1/fs:1-1/fs; A = 1.0; powfund = A^2/2; a = 0.4; powharm = a^2/2; s = 0.1; varnoise = s^2; x = A*cos(2*pi*1000*t) + ... a*sin(2*pi*2000*t) + s*randn(size(t));
SNR、THD、SINAD がそれぞれ定義を満たしていることを確認します。
SNR = snr(x); defSNR = 10*log10(powfund/varnoise); SN = [SNR defSNR]
SN = 1×2 17.0178 16.9897
THD = thd(x); defTHD = 10*log10(powharm/powfund); TH = [THD defTHD]
TH = 1×2 -7.9546 -7.9588
SINAD = sinad(x); defSINAD = 10*log10(powfund/(powharm+varnoise)); SI = [SINAD defSINAD]
SI = 1×2 7.4571 7.4473
48 kHz でサンプリングされた 2.5 kHz の正弦波の SNR を計算します。分散 0.001² のホワイト ノイズを追加します。
Fi = 2500; Fs = 48e3; N = 1024; x = sin(2*pi*Fi/Fs*(1:N)) + 0.001*randn(1,N); SNR = snr(x,Fs)
SNR = 57.7103
スペクトルをプロットして SNR に注釈を付けます。
snr(x,Fs);
48 kHz でサンプリングされた 2.5 kHz の正弦波のピリオドグラム PSD (パワー スペクトル密度) 推定を取得します。標準偏差 0.00001 のホワイト ノイズを付加します。この値を、SNR を決定するための入力として使用します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。
rng default Fi = 2500; Fs = 48e3; N = 1024; x = sin(2*pi*Fi/Fs*(1:N)) + 0.00001*randn(1,N); w = kaiser(numel(x),38); [Pxx, F] = periodogram(x,w,numel(x),Fs); SNR = snr(Pxx,F,'psd')
SNR = 97.7446
パワー スペクトルを使用し、48 kHz でサンプリングされ、標準偏差 0.00001 のホワイト ノイズに含まれる 2.5 kHz の正弦波の SNR を計算します。再現可能な結果が必要な場合は、乱数発生器をリセットします。
rng default Fi = 2500; Fs = 48e3; N = 1024; x = sin(2*pi*Fi/Fs*(1:N)) + 0.00001*randn(1,N); w = kaiser(numel(x),38); [Sxx, F] = periodogram(x,w,numel(x),Fs,'power'); rbw = enbw(w,Fs); SNR = snr(Sxx,F,rbw,'power')
信号のスペクトルをプロットして SNR に注釈を付けます。
snr(Sxx,F,rbw,'power');
入力が 2.1 kHz トーンの弱非線形増幅器の出力に類似した信号を生成します。信号は 10 kHz で 1 秒間サンプリングされます。信号のパワー スペクトルを計算してプロットします。β = 38 のカイザー ウィンドウを使用して計算します。
Fs = 10000; f = 2100; t = 0:1/Fs:1; x = tanh(sin(2*pi*f*t)+0.1) + 0.001*randn(1,length(t)); periodogram(x,kaiser(length(x),38),[],Fs,'power')
高調波は周波数 4.2 kHz、6.3 kHz、8.4 kHz、10.5 kHz、12.6 kHz、14.7 kHz でノイズから突出します。最初の周波数を除くすべての周波数は、ナイキスト周波数より大きくなります。高調波はそれぞれ 3.7 kHz、1.6 kHz、0.5 kHz、2.6 kHz、4.7 kHz にエイリアシングされます。
信号の S/N 比を計算します。snr は、既定で、エイリアシングされた高調波をノイズの一部として扱います。
snr(x,Fs,7);
計算を繰り返しますが、今度はエイリアシングされた高調波を信号の一部として扱います。
snr(x,Fs,7,'aliased');
48 kHz でサンプリングされた正弦波信号を作成します。この信号には、周波数が 1 kHz で単位振幅をもつ基本波があります。また、振幅が半分の 2 kHz の高調波と、分散が 0.1² の加法性ノイズも含まれています。
信号のノイズ パワーを計算します。定義を満たしていることを確認します。
[SNR,npow] = snr(x,fs); compare = [10*log10(powfund)-npow SNR]
compare = 1×2 17.0281 17.0178
50 kHz でサンプリングされる、周波数 2.5 kHz の正弦波を生成します。乱数発生器をリセットします。標準偏差 0.00005 のホワイト ガウス ノイズを信号に付加します。結果を弱非線形増幅器に通します。SNR をプロットします。
rng default fs = 5e4; f0 = 2.5e3; N = 1024; t = (0:N-1)/fs; ct = cos(2*pi*f0*t); cd = ct + 0.00005*randn(size(ct)); amp = [1e-5 5e-6 -1e-3 6e-5 1 25e-3]; sgn = polyval(amp,cd); snr(sgn,fs);
基本波を含むすべての高調波と DC 成分は、ノイズの測定では考慮されません。基本波と高調波にはラベルが付けられます。
入力信号。ベクトル、行列、または N 次元配列として指定します。
データ型: double | single 複素数のサポート: あり
double
single
入力信号のノイズの推定値。ベクトル、行列、または xi と同じ次元の N 次元配列として指定します。
実数値正弦波入力信号。行ベクトルまたは列ベクトルで指定されます。
データ型: double | single
サンプル レート。正のスカラーで指定します。サンプル レートは単位時間あたりのサンプル数です。時間の単位が秒の場合、サンプル レートの単位は Hz です。
正の整数スカラーとして指定される、SNR の計算から除外する高調波の数。n の既定値は 6 です。
非負の実数値列ベクトルとして指定される片側パワー スペクトル密度推定。
パワー スペクトル密度は、デシベル単位ではなく、線形単位で表さなければなりません。デシベル値をパワー値に変換するには、db2pow を使用します。
db2pow
例: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) は、2π Hz でサンプリングされたノイズの多い 2 チャネル正弦波のピリオドグラム PSD 推定値とそれについて計算される周波数を指定します。
[pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))
片側 PSD 推定 pxx の巡回周波数。行ベクトルまたは列ベクトルとして指定します。f の最初の要素は 0 でなければなりません。
パワー スペクトル。非負の実数値行ベクトルまたは列ベクトルで指定されます。
パワー スペクトルは、デシベル単位ではなく線形単位で表さなければなりません。デシベル値をパワー値に変換するには、db2pow を使用します。
例: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),"power") では、ホワイト ガウス ノイズに組み込まれる 2 チャネルの正弦波のピリオドグラム パワー スペクトル推定と、計算に使う正規化周波数を指定します。
[sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),"power")
分解能帯域幅。正のスカラーで指定されます。この分解能帯域幅は、離散フーリエ変換の周波数分解能と、ウィンドウの等価ノイズ帯域幅の積です。
S/N 比。搬送波に対するデシベル (dBc) 単位で表される実数値のスカラーとして返されます。入力信号が正弦波でない場合、SNR はデシベル (dB) 単位で返されます。
実数値のスカラーとして返される、入力信号の高調波以外の成分の全ノイズ パワー。
関数 thd、sfdr、sinad および snr は、正弦波による入力刺激を受けた弱非線形システムの応答を測定します。
thd
sfdr
sinad
時間領域の入力が与えられると、snr は、サイドローブ減衰量の大きいカイザー ウィンドウを使い、ピリオドグラムを実行します。基本周波数を求めるため、アルゴリズムは、最大の非ゼロスペクトル成分のピリオドグラムを探索します。続いて、最大値から単調に減少するすべての隣接するビンの中心モーメントを計算します。基本波は、検出可能であるためには、少なくとも 2 番目の周波数ビンに属している必要があります。高い高調波成分は基本周波数の整数倍になります。高調波が別の高調波の近傍にある単調減少領域にある場合、そのパワーは大きい方の高調波に属するものと見なされます。この大きい方の高調波は、基本波である場合も、そうでない場合もあります。
この関数では、ノイズのみを含む領域のパワーの中央値を使用してノイズを推定します。DC 成分は計算では考慮されません。各点のノイズは、推定されたレベルか、その点の縦座標のうち、小さい方になります。このノイズが、信号および高調波の値から減算されます。
基本波が信号の最も高いスペクトル成分でない場合、snr は失敗します。
周波数成分がカイザー ウィンドウのサイドローブ幅を許容できるよう、互いを十分離してください。これが不可能な場合は、"power" フラグを使用し、別のウィンドウを使ってピリオドグラムを計算することができます。
"power"
すべて展開する
使用上の注意および制限:
x と y がコンパイル時に複素数の場合、そのサイズはコンパイル時に定数でなければなりません。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
gpuArray
関数 snr は gpuArray オブジェクトをサポートしています。この機能を使用するには、Parallel Computing Toolbox™ が必要です。
sfdr | sinad | thd | toi
toi
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ