メインコンテンツ

pwelch

ウェルチのパワー スペクトル密度推定

説明

pxx = pwelch(x) は、ウェルチのオーバーラップ セグメント平均推定器を使用して、信号 x のパワー スペクトル密度 (PSD) 推定を返します。関数は、x の列を独立したチャネルとして扱います。

[pxx,f] = pwelch(x,win,nOverlap,freqSpec) は、信号 x のウェルチ PSD 推定と周波数 f (ラジアン/サンプル) を返します。このとき、pwelch 関数は次のように動作します。

  • win を使用して信号をセグメントに分割し、各セグメントにウィンドウを適用する。

  • nOverlap で指定したオーバーラップ長を使用して、隣接するセグメント間でサンプルをオーバーラップさせる。

  • ウィンドウが適用された各セグメントに対し、freqSpec で指定した離散フーリエ変換 (DFT) 点の数に基づいて、または指定した周波数において DFT を計算する。

これらの入力引数のいずれかに既定値を使用するには、それらを空 [] として指定します。

[pxx,f] = pwelch(x,win,nOverlap,freqSpec,Fs) は、サンプル レート Fs を指定し、循環周波数 f を Hz 単位で返します。

[___] = pwelch(___,freqRange,spectrumType,trace) は、上記の任意の構文に対して、周波数範囲、スペクトル タイプ、およびトレース モードも追加で指定します。これらの入力引数は、任意の組み合わせで指定できます。

[___,pxxc] = pwelch(___,ConfidenceLevel=p) は、PSD 推定の p × 100% 信頼区間を pxxc に返します。

[___] = pwelch(___,Parent=h) は、ターゲットの親コンテナー h にウェルチ PSD 推定またはパワー スペクトルをプロットします。

出力引数を設定せずに pwelch(___) を使用すると、現在の Figure ウィンドウにウェルチ PSD 推定またはパワー スペクトルがプロットされます。

すべて折りたたむ

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/4 ラジアン/サンプルの離散時間正弦波で構成される入力信号のウェルチ PSD 推定を求めます。

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/4 ラジアン/サンプルの正弦波を作成します。再現可能な結果が必要な場合は、乱数発生器をリセットします。信号長は Nx=320 サンプルです。

rng("default")

n = 0:319;
x = cos(pi/4*n) + randn(size(n));

既定のハミング ウィンドウと DFT 長を使用してウェルチ PSD 推定を求めます。既定のセグメント長は 71 サンプル、DFT 長は 256 点で、周波数分解能は 2π/256 ラジアン/サンプルとなっています。信号は実数値のため、ピリオドグラムは片側で、256/2+1 の点が含まれます。ウェルチ PSD 推定をプロットします。

pxx = pwelch(x);

pwelch(x)

Figure contains an axes object. The axes object with title Welch Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi rad/sample), ylabel Power/Frequency (dB/(rad/sample)) contains an object of type line.

計算を繰り返します。

  • 長さ nsc=Nx/4.5 のセクションに信号を分割します。このアクションは、可能な限り長いセグメントに分割される信号と等価で、8 にできるだけ近い (ただし 8 を超えない) 数のセグメントが 50% のオーバーラップで取得されます。

  • ハミング ウィンドウを使用して、セクションにウィンドウを適用します。

  • 隣接するセクション間で 50% のオーバーラップを指定します。

  • FFT を計算するには、max(256,2p) 点を使用します。ここで、p=log2nsc です。

2 つの方法の結果が同じになることを確認します。

Nx = length(x);
nsc = floor(Nx/4.5);
nov = floor(nsc/2);
nff = max(256,2^nextpow2(nsc));

pxxt = pwelch(x,hamming(nsc),nov,nff);

maxerr = max(abs(abs(pxxt(:)) - abs(pxx(:))))
maxerr = 
0

長さが等しく、セクション間のオーバーラップが 50% である 8 つのセクションに信号を分割します。前のステップと同じ FFT 長を指定します。ウェルチ PSD 推定を計算し、前の 2 つの手順と結果が同じであることを確認します。

ns = 8;
ov = 0.5;
lsc = floor(Nx/(ns-(ns-1)*ov));

pxxt8 = pwelch(x,lsc,floor(ov*lsc),nff);

maxerr8 = max(abs(abs(pxxt8(:)) - abs(pxx(:))))
maxerr8 = 
0

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/3 ラジアン/サンプルの離散時間正弦波で構成される入力信号のウェルチ PSD 推定を求めます。

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/3 ラジアン/サンプルの正弦波を作成します。再現可能な結果が必要な場合は、乱数発生器をリセットします。信号のサンプル数は 512 です。

rng("default")

n = 0:511;
x = cos(pi/3*n) + randn(size(n));

信号を 132 サンプルの長さのセグメントに分割するウェルチ PSD 推定を求めます。信号のセグメントは 132 サンプルの長さのハミング ウィンドウで乗算されます。オーバーラップされたサンプルの数は指定されていないため、132/2 = 66 に設定されます。DFT 長は 256 点で、周波数分解能は 2π/256 ラジアン/サンプルとなっています。信号は実数値のため、PSD 推定は片側で、256/2+1 = 129 の点が含まれます。正規化周波数の関数として PSD をプロットします。

segmentLength = 132;
[pxx,w] = pwelch(x,segmentLength);

plot(w/pi,pow2db(pxx))
xlabel("Normalized Frequency (\times \pi rad/sample)")
title("Welch Power Spectral Density Estimate")

Figure contains an axes object. The axes object with title Welch Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi rad/sample) contains an object of type line.

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/4 ラジアン/サンプルの離散時間正弦波で構成される入力信号のウェルチ PSD 推定を求めます。

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/4 ラジアン/サンプルの正弦波を作成します。再現可能な結果が必要な場合は、乱数発生器をリセットします。信号長は 320 サンプルです。

rng("default")

n = 0:319;
x = cos(pi/4*n) + randn(size(n));

信号を 100 サンプルの長さのセグメントに分割するウェルチ PSD 推定を求めます。信号のセグメントは 100 サンプルの長さのハミング ウィンドウで乗算されます。オーバーラップされたサンプルの数は 25 です。DFT 長は 256 点で、周波数分解能は 2π/256 ラジアン/サンプルとなっています。信号は実数値のため、PSD 推定は片側で、256/2+1 の点が含まれます。

segmentLength = 100;
noverlap = 25;
pxx = pwelch(x,segmentLength,noverlap);

plot(pow2db(pxx))
xlabel("Frequency Samples")
title("Welch Power Spectral Density Estimate")

Figure contains an axes object. The axes object with title Welch Power Spectral Density Estimate, xlabel Frequency Samples contains an object of type line.

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/4 ラジアン/サンプルの離散時間正弦波で構成される入力信号のウェルチ PSD 推定を求めます。

N(0,1) 加法性ホワイト ノイズを伴う角周波数 π/4 ラジアン/サンプルの正弦波を作成します。再現可能な結果が必要な場合は、乱数発生器をリセットします。信号長は 320 サンプルです。

rng("default")

n = 0:319;
x = cos(pi/4*n) + randn(size(n));

信号を 100 サンプルの長さのセグメントに分割するウェルチ PSD 推定を求めます。50% の既定オーバーラップを使用します。DFT 長が 640 点となるように指定し、π/4 ラジアン/サンプルの周波数が DFT ビン (ビン 81) に対応するようにします。信号は実数値のため、PSD 推定は片側で、640/2+1 の点が含まれます。

segmentLength = 100;
nfft = 640;
pxx = pwelch(x,segmentLength,[],nfft);

plot(pow2db(pxx))
xlabel("Frequency Points")
title("Welch Power Spectral Density Estimate")

Figure contains an axes object. The axes object with title Welch Power Spectral Density Estimate, xlabel Frequency Points contains an object of type line.

N(0,1) 加法性ホワイト ノイズを伴う 100 Hz の正弦波で構成される信号を生成します。再現可能な結果が必要な場合は、乱数発生器をリセットします。サンプル レートは 1 kHz で、信号の持続時間は 5 秒です。

rng("default")

Fs = 1000;
t = 0:1/Fs:5-1/Fs;
x = cos(2*pi*100*t) + randn(size(t));

前の信号についてウェルチのオーバーラップ セグメント平均 PSD 推定を求めます。300 個のサンプルがオーバーラップする 500 サンプル長のセグメント長を使用します。500 DFT 点を使用して 100 Hz が直接 DFT ビンにあたるようにします。サンプル レートを入力して周波数ベクトルを Hz で出力します。結果をプロットします。

[pxx,f] = pwelch(x,500,300,500,Fs);

plot(f,pow2db(pxx))

xlabel("Frequency (Hz)")
ylabel("PSD (dB/Hz)")

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel PSD (dB/Hz) contains an object of type line.

200 kHz で 0.1 秒間サンプリングされた、ノイズを含む 3 つの正弦波とチャープで構成される信号を作成します。正弦波の周波数は 1 kHz、10 kHz および 20 kHz です。正弦波の振幅とノイズ レベルはさまざまです。ノイズのないチャープの周波数は 20 kHz で始まり、サンプリング中に 30 kHz まで線形に増加します。

rng("default")
Fs = 200e3; 
Fc = [1 10 20]'*1e3; 
Ns = 0.1*Fs;

t = (0:Ns-1)/Fs;
x = [1 1/10 10]*sin(2*pi*Fc*t) + [1/200 1/2000 1/20]*randn(3,Ns);
x = x + chirp(t,20e3,t(end),30e3);

信号のウェルチ PSD 推定と最大ホールドおよび最小ホールド スペクトルを計算します。結果をプロットします。

[pxx,f] = pwelch(x,[],[],[],Fs);
pmax = pwelch(x,[],[],[],Fs,"maxhold");
pmin = pwelch(x,[],[],[],Fs,"minhold");

plot(f,pow2db(pxx))
hold on
plot(f,pow2db([pmax pmin]),":")
hold off
xlabel("Frequency (Hz)")
ylabel("PSD (dB/Hz)")
legend(["pwelch" "maxhold" "minhold"])

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel PSD (dB/Hz) contains 3 objects of type line. These objects represent pwelch, maxhold, minhold.

この手順を繰り返し、今度はパワー スペクトル推定が中心になるように計算します。

[pxx,f] = pwelch(x,[],[],[],Fs,"centered","power");
pmax = pwelch(x,[],[],[],Fs,"maxhold","centered","power");
pmin = pwelch(x,[],[],[],Fs,"minhold","centered","power");

plot(f,pow2db(pxx))
hold on
plot(f,pow2db([pmax pmin]),":")
hold off
xlabel("Frequency (Hz)")
ylabel("Power (dB)")
legend(["pwelch" "maxhold" "minhold"])

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Power (dB) contains 3 objects of type line. These objects represent pwelch, maxhold, minhold.

この例は、ウェルチのオーバーラップ セグメント平均 (WOSA) PSD 推定での信頼限界の使い方を示します。統計的有意性の必要条件ではありませんが、周囲の PSD 推定の信頼下限が信頼上限を超えるウェルチ推定の周波数は、時系列で大きな振幅を明確に示します。

N(0,1) 加法性ホワイト ノイズを伴う 100 Hz と 150 Hz の正弦波を重ね合わせて構成される信号を作成します。2 つの正弦波の振幅は 1 です。サンプル レートは 1 kHz です。再現可能な結果が必要な場合は、乱数発生器をリセットします。

rng("default")
Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*100*t) + sin(2*pi*150*t) + randn(size(t));

95% 信頼限界の WOSA 推定を求めます。セグメント長を 200 に設定し、セグメントの 50% (100 サンプル) をオーバーラップさせます。

L = 200;
win = hamming(L);
nOverlap = 100;
[pxx,f,pxxc] = pwelch(x,win,nOverlap,200,Fs,ConfidenceLevel=0.95);

信頼区間と共に WOSA PSD 推定をプロットし、100 Hz と 150 Hz 付近の周波数関心領域を拡大します。100 および 150 Hz のごく近傍における信頼限界の下限は、100 および 150 Hz の近傍外における信頼限界の上限より大幅に上になります。

plot(f,pow2db(pxx))
hold on
plot(f,pow2db(pxxc),"-.",Color=[0.866 0.329 0])
hold off

xlim([25 250])
xlabel("Frequency (Hz)")
ylabel("PSD (dB/Hz)")
title("Welch Estimate with 95%-Confidence Bounds")

Figure contains an axes object. The axes object with title Welch Estimate with 95%-Confidence Bounds, xlabel Frequency (Hz), ylabel PSD (dB/Hz) contains 3 objects of type line.

N(0,1/4) 加法性ホワイト ノイズを伴う 100 Hz の正弦波で構成される信号を生成します。再現可能な結果が必要な場合は、乱数発生器をリセットします。サンプル レートは 1 kHz で、信号の持続時間は 5 秒です。

rng("default")

Fs = 1000;
t = 0:1/Fs:5-1/Fs;

noisevar = 1/4;
x = cos(2*pi*100*t) + sqrt(noisevar)*randn(size(t));

ウェルチ法を使用して DC を中央に揃えたパワー スペクトルを求めます。300 個のサンプルがオーバーラップし、DFT 長が 500 点の 500 サンプル長のセグメント長を使用します。

[pxx,f] = pwelch(x,500,300,500,Fs,"centered","power");

結果をプロットします。-100 Hz と 100 Hz におけるパワーが振幅 1 の実数値正弦波に対して 1/4 となり、期待したパワーに近くなります。1/4 からの偏差は加法性ノイズの影響によるものです。

plot(f,pow2db(pxx))
xlabel("Frequency (Hz)")
ylabel("Magnitude (dB)")
grid

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

N(0,1) 加法性ホワイト ガウス ノイズを伴う 3 つの正弦波から構成されるマルチチャネル信号の 1024 サンプルを生成します。正弦波の周波数は、π/2π/3、および π/4 ラジアン/サンプルです。ウェルチ法を使用して信号の PSD を推定し、プロットします。

N = 1024;
n = 0:N-1;

w = pi./[2;3;4];

rng("default")
x = cos(w*n)' + randn(length(n),3);

pwelch(x)

Figure contains an axes object. The axes object with title Welch Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi rad/sample), ylabel Power/Frequency (dB/(rad/sample)) contains 3 objects of type line.

R2026a 以降

指定したターゲット座標軸とパネル コンテナーに、4 つの信号のウェルチ パワー スペクトル密度 (PSD) 推定とウェルチ パワー スペクトルをプロットします。

4 つの振動信号 (サンプル レート 10 kHz、3 秒間) を作成します。

Fs = 10e3;
t = 0:1/Fs:3;
x1 = sinc(Fs/2.5*(t-mean(t)));
x2 = sum(cos(2*pi*600*[1 3 5 7]'.*t),1) + randn(size(t))/1e4;
x3 = exp(1j*pi*sin(4*t)*Fs/10);
x4 = chirp(t,Fs/10,t(end),Fs/2.5,"quadratic");

ターゲット座標軸へのウェルチ PSD 推定とパワー スペクトルのプロット

新しい Figure ウィンドウの南西隅と北東隅に 2 つの座標軸を作成します。

fig = figure;
ax1 = axes(fig,Position=[0.09 0.1 0.52 0.45]);
ax2 = axes(fig,Position=[0.55 0.7 0.42 0.25]);

信号 x1 のウェルチ PSD 推定と信号 x2 のウェルチ パワー スペクトルを、Figure の南西軸と北東軸にそれぞれプロットします。256 サンプルのカイザー ウィンドウ、220 サンプルのオーバーラップ長、および 512 個の DFT 点を使用します。

g = kaiser(256,5);
ol = 220;
nfft = 512;

pwelch(x1,g,ol,nfft,Fs,Parent=ax1)
pwelch(x2,g,ol,nfft,Fs,"power",Parent=ax2)

Figure contains 2 axes objects. Axes object 1 with title Welch Power Spectral Density Estimate, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type line. Axes object 2 with title Welch Power Spectrum Estimate, xlabel Frequency (kHz), ylabel Power (dB) contains an object of type line.

ターゲット UI 座標軸へのウェルチ PSD 推定のプロット

新しい UI Figure ウィンドウの北西隅に座標軸を作成します。

uif = uifigure(Position=[100 100 720 540]);
ax3 = uiaxes(uif,Position=[5 305 300 200]);

信号 x3 のウェルチ PSD 推定を Figure の座標軸にプロットします。周波数は 0 kHz を中心として表示します。

pwelch(x3,g,ol,nfft,Fs,"centered",Parent=ax3)
title(ax3,"Welch PSD in UI Axes")

Figure contains an axes object. The axes object with title Welch PSD in UI Axes, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type line.

ターゲット パネル コンテナーへのウェルチ PSD 推定のプロット

UI Figure ウィンドウの南東隅にパネル コンテナーを追加します。

p = uipanel(uif,Position=[300 5 400 325], ...
    Title="Welch PSD in Panel Container", ...
    BackgroundColor="white");

信号 x4 のウェルチ PSD 推定をパネル コンテナーにプロットします。信頼水準を 90% に設定します。

pwelch(x4,g,ol,nfft,Fs,ConfidenceLevel=0.9,Parent=p)

Figure contains 2 axes objects and another object of type uipanel. Axes object 1 with title Welch Power Spectral Density Estimate, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains 3 objects of type line. These objects represent Power Spectral Density, 90% Confidence Interval. Axes object 2 with title Welch PSD in UI Axes, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type line.

入力引数

すべて折りたたむ

入力信号。ベクトルまたは行列として指定します。x を行列として指定した場合、pwelch はその列を独立したチャネルとして扱います。

例: cos(pi/4*(0:159))+randn(1,160) は単一チャネルの行ベクトル信号です。

例: cos(pi./[4;2]*(0:159))'+randn(160,2) は 2 チャネル信号です。

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

ウィンドウ。空 ([])、正の整数、またはベクトルとして指定します。

pwelch 関数は、入力信号 x をセグメントに分割し、ウィンドウを使用して、各セグメントのサンプルとウィンドウの値の積を要素ごとに計算します。ウィンドウの値は、この引数の指定方法に応じて決まります。

  • 空 ([]) — pwelch は、xnOverlap 個のオーバーラップ サンプルをもつ 8 個のセグメントに分割される長さのハミング ウィンドウを使用します。

  • 正の整数 — pwelch は、x を長さ win のセグメントに分割し、その長さのハミング ウィンドウを使用します。

  • ベクトル — pwelch は、x をベクトル win と同じ長さのセグメントに分割し、win で指定したウィンドウを使用します。

x の長さが nOverlap 個のオーバーラップ サンプルをもつ整数個のセグメントに厳密に分割できない場合、pwelchx をそれに応じて切り捨てます。

利用可能なウィンドウのリストについては、ウィンドウを参照してください。

メモ

ハミング ウィンドウの既定のサイドローブ減衰量は 42.5 dB です。この減衰は、この値 (ピーク スペクトル コンテンツを基準とする値) を下回るスペクトル コンテンツをマスクすることがあります。選択するウィンドウを変えることにより、分解能 (たとえば箱型ウィンドウを使用) とサイドローブ減衰量 (たとえばハン ウィンドウを使用) のバランスをとることができます。詳細については、ウィンドウ デザイナーを参照してください。

例: hann(N+1)(1-cos(2*pi*(0:N)'/N))/2 は、いずれも長さ N + 1 のハン ウィンドウを指定します。

データ型: single | double

オーバーラップするサンプルの数。空 ([]) または非負の整数として指定します。

  • 空 ([]) — pwelch は、セグメント間で 50% のオーバーラップが発生する数を使用します。

    セグメントの長さを指定していない場合、関数により nOverlapNx / 4.5⌋ に設定されます。ここで、Nx は入力信号の長さで、⌊ ⌋ 記号は床関数を表します。このアクションは、50% のオーバーラップで 8 にできるだけ近い (ただし 8 を超えない) 数のセグメントを取得するために、信号を可能な限り長いセグメントに分割することと等価です。

  • 非負の整数 — pwelch は、この引数で指定したサンプル数を使用して、隣接するセグメントをオーバーラップさせます。

    • win がスカラーの場合、nOverlapwin より小さくなければなりません。

    • win がベクトルの場合、nOverlapwin の長さより小さくなければなりません。

周波数仕様。次のいずれかの値として指定します。

  • 空 ([]) — pwelch は、256 と、ウィンドウ長以上となる次の 2 のべき乗のうち、いずれか大きい方に等しい DFT 点の数を使用して、スペクトル推定を計算します。

  • 正の整数 — pwelch は、この引数で指定した DFT 点の数を使用してスペクトル推定を計算します。

    • freqSpec がセグメント長より大きい場合、pwelch はセグメント データをゼロでパディングします。

    • freqSpec がセグメント長より小さい場合、pwelchfreqSpec を法としてセグメントを分割し、得られたセグメント フレームを合計します。

  • 2 要素以上のベクトル — pwelch は、freqSpec で指定した周波数でスペクトル推定を計算します。

    • サンプル レート Fs を指定した場合、pwelch は、freqSpecFs と同じ単位の循環周波数とみなします。

    • Fs を指定しない場合、pwelch は、freqSpec をラジアン/サンプル単位の正規化周波数とみなします。

例: freqSpec = 512 は、512 個の DFT 点を指定します。

例: freqSpec = pi./[8 4 2] は、3 つの正規化周波数から成るベクトルを指定します。

データ型: single | double

サンプル レート。正のスカラーで指定します。サンプル レートは単位時間あたりのサンプル数です。時間の単位が秒の場合、サンプル レートの単位は Hz です。

  • Fs を空配列 [] として指定すると、pwelch は入力信号 x のサンプル レートを 1 Hz と仮定します。

  • Fs を指定しない場合、pwelch は入力信号 x のサンプル レートを 2π ラジアン/サンプルと仮定します。

PSD 推定またはパワー スペクトルの周波数範囲。"onesided""twosided"、または "centered" として指定します。

pwelch 関数は、freqRange で指定された値、DFT 点の数 freqSpec が偶数か奇数か、および Fs が指定されているかどうかに応じて、行数と周波数範囲が異なる pxx を返します。

freqRangefreqSpecpxx の行数

pxx の周波数範囲

Fs の指定なし

Fs の指定あり

"onesided"
(x が実数値の場合、既定)
偶数freqSpec/2 + 1[0,π] ラジアン/サンプル[0,Fs/2] サイクル/単位時間
奇数(freqSpec + 1)/2[0,π) ラジアン/サンプル[0,Fs/2) サイクル/単位時間
"twosided"
(x が複素数値の場合、既定)
偶数または奇数freqSpec[0,2π) ラジアン/サンプル[0,Fs) サイクル/単位時間
"centered"偶数freqSpec(–π,π] ラジアン/サンプル(–Fs/2,Fs/2] サイクル/単位時間
奇数(–π,π) ラジアン/サンプル(–Fs/2,Fs/2) サイクル/単位時間

メモ

  • freqSpec を循環周波数または正規化周波数のベクトルとして指定した場合、この引数はサポートされません。

  • "onesided" 値を指定した場合、pwelch は 0 とナイキスト周波数以外のすべての周波数でパワーを 2 倍にして、合計パワーを保存します。

  • x が複素数値の場合、"onesided" 値はサポートされません。

データ型: char | string

パワー スペクトルのスケーリング。次のいずれかの値として指定します。

  • "psd"pwelch は、パワー スペクトル密度を返します。

  • "power"pwelch は、ウィンドウの等価ノイズ帯域幅ごとに PSD の推定をスケーリングし、各周波数におけるパワーの推定を返します。

次の表は、入力信号 x、ウィンドウ ベクトル win、オーバーラップ長 nOverlap、周波数仕様 freqSpec、およびサンプル レート Fs を指定した場合に、pxx に返される PSD 推定とパワー スペクトル推定のスケーリング関係を示しています。

サンプル レートスケーリング関係
Fs の指定あり

psd = pwelch(x,win,nOverlap,freqSpec,Fs,"psd");
pow = pwelch(x,win,nOverlap,freqSpec,Fs,"power");
このとき、powpsd*enbw(win,Fs) と等価です。win はウィンドウ ベクトルです。

Fs の指定なし

psd = pwelch(x,win,nOverlap,freqSpec,"psd");
pow = pwelch(x,win,nOverlap,freqSpec,"power");
このとき、powpsd*enbw(win,2*pi) と等価です。

トレース モード。次のいずれかの値として指定します。

  • "mean"pwelch は、各周波数ビンにおけるすべてのセグメントのパワー スペクトル推定を平均化することで、各入力チャネルのウェルチ スペクトル推定を返します。

  • "maxhold"pwelch は、各周波数ビンにおけるセグメント間のパワー スペクトルの最大値を選択することで、各入力チャネルの最大ホールド スペクトルを返します。

  • "minhold"pwelch は、各周波数ビンにおけるセグメント間のパワー スペクトルの最小値を選択することで、各入力チャネルの最小ホールド スペクトルを返します。

PSD 推定のカバレッジ確率。(0,1) の範囲のスカラーとして指定します。

ConfidenceLevel=ppxxc を指定した場合、関数は真の PSD に対する p × 100% 区間推定の下限および上限を含む pxxc を出力します。

R2026a 以降

ターゲットの親コンテナー。Axes オブジェクト、UIAxes オブジェクト、または Panel オブジェクトとして指定します。

Parent=h を指定した場合、pwelch 関数は、呼び出し時の出力引数の有無にかかわらず、指定されたターゲットの親コンテナーにウェルチ PSD 推定またはパワー スペクトルをプロットします。

ターゲット コンテナーおよび MATLAB® グラフィックスにおける親子関係の詳細については、グラフィックス オブジェクトの階層を参照してください。UIAxes オブジェクトおよび Panel オブジェクトの Parent を使用したアプリ設計の詳細については、Plot Spectral Representations of Signal in App Designerを参照してください。

例: h = axes(figure,Position=[0.1 0.1 0.6 0.5]) は、座標軸の親コンテナーを定義します。pwelch(x,[],[],[],Parent=h) を指定した場合、関数は、親コンテナー h に入力信号 x のウェルチ PSD をプロットします。

出力引数

すべて折りたたむ

PSD 推定またはパワー スペクトル。実数値の非負の列ベクトルまたは行列として返されます。

  • pxx の各列は、x の対応する列の PSD 推定またはパワー スペクトルであり、spectrumType の指定方法に応じて決まります。

  • PSD 推定の単位は、単位周波数あたりの入力信号の 2 乗振幅単位となります。たとえば、入力データ x の単位がボルトで、サンプル レート Fs をヘルツ単位で指定し、抵抗を 1 Ω と仮定した場合、PSD 推定はワット/ヘルツ単位となります。

  • パワー スペクトルの単位は、入力信号の 2 乗振幅単位となります。たとえば、入力データ x の単位がボルトで、抵抗を 1 Ω と仮定した場合、PSD 推定はワット単位となります。

PSD 推定と関連付けられている周波数。実数値の列ベクトルとして返されます。

  • Fs を指定した場合、f には Hz 単位の循環周波数が含まれます。

  • Fs を指定しない場合、f にはラジアン/サンプル単位の正規化周波数が含まれます。

信頼限界。実数値の行列として返されます。

  • pxxc の行数は pxx の行数と同じです。

  • pxxc の列数は pxx の列数の 2 倍です。

    • 奇数番号の列には信頼区間の下限が含まれています。

    • 偶数番号の列には信頼区間の上限が含まれています。

    したがって、pxxc(m,2*n-1) は、推定 pxx(m,n) に対応する信頼区間の下限で、pxxc(m,2*n) はその上限となります。

  • 信頼区間のカバレッジ確率は、p の入力値によって決まります。

データ型: single | double

詳細

すべて折りたたむ

参照

[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.

[2] Stoica, Petre, and Randolph Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する