Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

pwelch

Welch의 파워 스펙트럼 밀도 추정값

설명

예제

pxx = pwelch(x)는 Welch의 중첩 세그먼트 평균화 추정량(Welch's overlapped segment averaging estimator)을 사용하여 구한 입력 신호 x에 대한 파워 스펙트럼 밀도(PSD) 추정값 pxx를 반환합니다. x가 벡터이면 단일채널로 처리됩니다. x가 행렬이면 PSD가 각 열에 대해 개별적으로 계산되어 pxx의 대응 열에 저장됩니다. x가 실수 값이면 pxx는 단측 PSD 추정값입니다. x가 복소수 값이면 pxx는 양측 PSD 추정값입니다. 기본적으로, x는 50% 중첩을 갖는 세그먼트의 개수가 8에 최대한 근접하되 초과하지는 않도록 하는 가능한 한 가장 긴 섹션으로 나뉩니다. 각 세그먼트에는 해밍 윈도우가 적용됩니다. PSD 추정값을 구할 수 있도록 수정된 주기도는 평균화됩니다. x의 길이를 50% 중첩을 갖는 정수 개수의 세그먼트로 정확히 나눌 수 없는 경우, 나눠질 수 있도록 x가 적절하게 잘립니다.

예제

pxx = pwelch(x,window)는 입력 벡터 또는 정수 window를 사용하여 신호를 세그먼트로 나눕니다. window가 벡터이면 pwelch는 신호를 window 길이와 같은 길이의 세그먼트로 나눕니다. 수정된 주기도는 신호 세그먼트에 벡터 window를 곱하여 계산됩니다. window가 정수이면 신호가 window 길이의 세그먼트로 나뉩니다. 수정된 주기도는 window 길이의 해밍 윈도우를 사용하여 계산됩니다.

예제

pxx = pwelch(x,window,noverlap) 은 세그먼트 간에 noverlap개 샘플 중첩을 사용합니다. noverlapwindow가 정수인 경우 window보다 작은 양의 정수여야 합니다. noverlapwindow가 벡터인 경우 window의 길이보다 작은 양의 정수여야 합니다. noverlap을 지정하지 않거나 noverlap을 빈 값으로 지정하는 경우 중첩된 샘플의 디폴트 개수는 윈도우 길이의 50%입니다.

예제

pxx = pwelch(x,window,noverlap,nfft)는 PSD 추정값에 사용할 이산 푸리에 변환(DFT) 점의 개수를 지정합니다. 디폴트 nfft는 세그먼트 길이보다 큰 첫 번째 2의 제곱값과 256 중 더 큰 값이 됩니다.

[pxx,w] = pwelch(___)는 정규화 주파수 벡터 w를 반환합니다. pxx가 단측 PSD 추정값인 경우, w의 구간은 nfft가 짝수이면 [0,π]이고, nfft가 홀수이면 [0,π)입니다. pxx가 양측 PSD 추정값인 경우, w의 구간은 [0,2π)입니다.

예제

[pxx,f] = pwelch(___,fs)는 주파수 벡터 f를 반환합니다(단위: 단위 시간당 주기). 샘플 레이트 fs는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 f는 주기/초(Hz) 단위를 사용합니다. 실수 값을 갖는 신호의 경우, f의 구간은 nfft가 짝수이면 [0,fs/2]이고, nfft가 홀수이면 [0,fs/2)입니다. 복소수 값을 갖는 신호의 경우, f의 구간은 [0,fs)입니다. fspwelch에 대한 다섯 번째 입력값이어야 합니다. 샘플 레이트를 입력하고 위에 열거된 옵션 인수의 디폴트 값을 그대로 사용하려면 이 인수를 빈 값 []로 지정하십시오.

[pxx,w] = pwelch(x,window,noverlap,w)는 벡터 w에 지정된 정규화 주파수에서 양측 Welch PSD 추정값을 반환합니다. 벡터 w는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 w를 nfft로 해석합니다.

[pxx,f] = pwelch(x,window,noverlap,f,fs)는 벡터 f에 지정된 주파수에서 양측 Welch PSD 추정값을 반환합니다. 벡터 f는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 f를 nfft로 해석합니다. f의 주파수는 단위 시간당 주기를 단위로 사용합니다. 샘플 레이트 fs는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 f는 주기/초(Hz) 단위를 사용합니다.

예제

[___] = pwelch(x,window,___,freqrange)freqrange로 지정된 주파수 범위에 대한 Welch PSD 추정값을 반환합니다. freqrange에 유효한 옵션은 'onesided', 'twosided' 또는 'centered'입니다.

예제

[___] = pwelch(x,window,___,trace)trace'maxhold'로 지정된 경우 최댓값 유지 스펙트럼 추정값을 반환하고, trace'minhold'로 지정된 경우 최솟값 유지 스펙트럼 추정값을 반환합니다.

예제

[___,pxxc] = pwelch(___,'ConfidenceLevel',probability)는 PSD 추정값에 대한 probability × 100% 신뢰구간을 pxxc로 반환합니다.

예제

[___] = pwelch(___,spectrumtype)spectrumtype'psd'로 지정된 경우 PSD 추정값을 반환하고, spectrumtype'power'로 지정된 경우 파워 스펙트럼을 반환합니다.

예제

pwelch(___)에 출력 인수를 지정하지 않으면 현재 Figure 창에 Welch PSD 추정값을 플로팅합니다.

예제

모두 축소

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 길이는 Nx=320개 샘플입니다.

rng default

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

디폴트 해밍 윈도우와 DFT 길이를 사용하여 Welch PSD 추정값을 구합니다. 디폴트 세그먼트 길이는 71개 샘플이고 DFT 길이는 256개 점이며, 이 경우 2π/256 rad/sample의 주파수 분해능이 생성됩니다. 신호가 실수 값이므로 주기도는 단측이고 256/2+1개 점이 있습니다. Welch 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 blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains an object of type line.

계산을 반복합니다.

  • 신호를 길이가 nsc=Nx/4.5인 섹션으로 나눕니다. 이 작업은 50% 중첩을 갖는 세그먼트의 개수가 8에 최대한 근접하되 초과하지는 않도록 하는 가능한 한 가장 긴 섹션으로 나누는 것과 동일합니다.

  • 해밍 윈도우를 사용하여 섹션에 윈도우를 적용합니다.

  • 연속 섹션 간에 50% 중첩을 지정합니다.

  • max(256,2p)개의 지점을 사용하여 FFT를 계산합니다. 여기서 p=log2nsc입니다.

두 접근 방식이 동일한 결과를 제공하는지 확인합니다.

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

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

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

섹션 간에 50% 중첩을 가지면서 길이가 동일한 8개 섹션으로 신호를 나눕니다. 이전 단계에서와 동일한 FFT 길이를 지정합니다. 단시간 Welch PSD 추정값을 계산하고 이전 두 절차와 같은 결과를 제공하는지 확인합니다.

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

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

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

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/3 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/3 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호 샘플은 512개입니다.

rng default

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

신호를 132개 샘플 길이의 세그먼트로 나누어 Welch PSD 추정값을 구합니다. 신호 세그먼트에 132개 샘플 길이의 해밍 윈도우가 곱해집니다. 중첩된 샘플의 개수가 지정되지 않아 132/2 = 66으로 설정됩니다. DFT 길이는 256개 점입니다. 이 경우 2π/256 rad/sample의 주파수 분해능이 생성됩니다. 신호가 실수 값이므로 PSD 추정값은 단측이고 256/2+1 = 129개 점이 있습니다. PSD를 정규화 주파수의 함수로 플로팅합니다.

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

plot(w/pi,10*log10(pxx))
xlabel('\omega / \pi')

Figure contains an axes object. The axes object with xlabel omega blank / blank pi contains an object of type line.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 길이는 320개 샘플입니다.

rng default

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

신호를 100개 샘플 길이의 세그먼트로 나누어 Welch PSD 추정값을 구합니다. 신호 세그먼트에 100개 샘플 길이의 해밍 윈도우가 곱해집니다. 중첩된 샘플의 개수는 25입니다. DFT 길이는 256개 점입니다. 이 경우 2π/256 rad/sample의 주파수 분해능이 생성됩니다. 신호가 실수 값이므로 PSD 추정값은 단측이고 256/2+1개 점이 있습니다.

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

plot(10*log10(pxx))

Figure contains an axes object. The axes object contains an object of type line.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 길이는 320개 샘플입니다.

rng default

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

신호를 100개 샘플 길이의 세그먼트로 나누어 Welch PSD 추정값을 구합니다. 디폴트 중첩 50%를 사용합니다. 주파수 π/4 rad/sample이 DFT Bin(Bin 81)에 대응되도록 DFT 길이를 640개 점으로 지정합니다. 신호가 실수 값이므로 PSD 추정값은 단측이고 640/2+1개 점이 있습니다.

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

plot(10*log10(pxx))
xlabel('rad/sample')
ylabel('dB / (rad/sample)')

Figure contains an axes object. The axes object with xlabel rad/sample, ylabel dB / (rad/sample) contains an object of type line.

가산성 N(0,1) 백색 잡음에서 100Hz 정현파로 구성된 신호를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 샘플 레이트는 1kHz이고 신호의 지속 시간은 5초입니다.

rng default

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

위에 나온 신호의 Welch의 중첩 세그먼트 평균화 PSD 추정값을 구합니다. 세그먼트 길이는 300개의 중첩된 샘플을 가지는 500개 샘플을 사용합니다. 100Hz가 정확히 DFT Bin에 떨어지도록 500개 DFT 점을 사용합니다. Hz 단위의 주파수 벡터를 출력하도록 샘플 레이트를 입력합니다. 결과를 플로팅합니다.

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

plot(f,10*log10(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.

0.1초 동안 200kHz로 샘플링된, 3개의 잡음이 있는 정현파와 하나의 처프(Chirp)로 구성된 신호를 생성합니다. 정현파의 주파수는 1kHz, 10kHz, 20kHz입니다. 정현파는 각기 다른 진폭과 잡음 수준을 가집니다. 잡음이 없는 처프는 샘플링 동안 20kHz에서 시작하여 30kHz까지 선형적으로 증가하는 주파수를 가집니다.

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);

Welch 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.

이 예제에서는 Welch의 중첩 세그먼트 평균화(WOSA) PSD 추정값과 함께 신뢰한계를 사용하는 경우를 다룹니다. 통계적 유의성에 있어 필요 조건은 아니지만, 주변 PSD 추정값의 신뢰 하한이 신뢰 상한을 초과하는 Welch 추정값의 주파수는 시계열에서 유의미한 진동을 명확하게 나타냅니다.

가산성 백색 N(0,1) 잡음에서 중첩된 형태의 100Hz 사인파와 150Hz 사인파로 구성된 신호를 생성합니다. 두 사인파의 진폭은 1입니다. 샘플 레이트는 1kHz입니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

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개 샘플) 중첩합니다. 신뢰구간에 따라 WOSA PSD 추정값을 플로팅하고 100Hz와 150Hz 근처의 주파수 관심 영역을 확대합니다.

L = 200;
noverlap = 100;
[pxx,f,pxxc] = pwelch(x,hamming(L),noverlap,200,fs,...
    'ConfidenceLevel',0.95);

plot(f,10*log10(pxx))
hold on
plot(f,10*log10(pxxc),'-.')
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.

100Hz와 150Hz의 바로 인근에 있는 신뢰 하한은 100Hz와 150Hz 주변을 벗어난 신뢰 상한보다 상당히 높습니다.

가산성 N(0,1/4) 백색 잡음에서 100Hz 정현파로 구성된 신호를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 샘플 레이트는 1kHz이고 신호의 지속 시간은 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));

Welch 방법을 사용하여 DC 기준 파워 스펙트럼을 구합니다. 세그먼트 길이는 300개의 중첩된 샘플을 가지는 500개 샘플을, DFT 길이는 500개 점을 사용합니다. 결과를 플로팅합니다.

[pxx,f] = pwelch(x,500,300,500,fs,'centered','power');

plot(f,10*log10(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.

-100Hz와 100Hz에서의 전력이 진폭이 1인 실수 값 사인파에 대해 예상되는 전력 1/4에 가깝다는 것을 알 수 있습니다. 1/4에서의 편차는 가산성 잡음의 효과로 인한 것입니다.

가산성 N(0,1) 백색 가우스 잡음(AWGN)에서 3개의 정현파로 구성된 다중채널 신호의 샘플 1024개를 생성합니다. 정현파의 주파수는 π/2 rad/sample, π/3 rad/sample, π/4 rad/sample입니다. Welch 방법을 사용하여 신호의 PSD를 추정하고 플로팅합니다.

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

w = pi./[2;3;4];
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 blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 3 objects of type line.

입력 인수

모두 축소

입력 신호로, 행 벡터나 열 벡터 또는 행렬로 지정됩니다. x가 행렬이면, 이 행렬의 각 열은 독립적인 채널로 처리됩니다.

예: cos(pi/4*(0:159))+randn(1,160)은 단일채널 행 벡터 신호입니다.

예: cos(pi./[4;2]*(0:159))'+randn(160,2)는 2채널 신호입니다.

데이터형: single | double
복소수 지원 여부:

윈도우로, 행 벡터나 열 벡터 또는 정수로 지정됩니다. window가 벡터이면 pwelchxwindow 길이와 같은 길이의 중첩 세그먼트로 나눈 후 각 신호 세그먼트를 window에 지정된 벡터로 곱합니다. window가 정수이면 pwelch는 그 정수 값과 같은 길이의 세그먼트로 나뉘고 동일한 길이의 해밍 윈도우가 사용됩니다. x의 길이를 noverlap개의 중첩 샘플이 있는 정수 개수의 세그먼트로 정확히 나눌 수 없는 경우, 나눠질 수 있도록 x가 적절하게 잘립니다. window를 빈 값으로 지정하면 noverlap개의 중첩 샘플이 있는 x의 8개 세그먼트를 구하기 위해 디폴트 해밍 윈도우가 사용됩니다.

데이터형: single | double

중첩된 샘플의 개수로, window 길이보다 작은 양의 정수로 지정됩니다. noverlap을 생략하거나 noverlap을 빈 값으로 지정하면 세그먼트 간의 50% 중첩을 구하기 위해 하나의 값이 사용됩니다.

DFT를 적용할 지점의 개수로, 양의 정수로 지정됩니다. 실수 값을 갖는 입력 신호 x의 경우, nfft가 짝수이면 PSD 추정값 pxx의 길이가 (nfft/2 + 1)이고, nfft가 홀수이면 길이가 (nfft + 1)/2입니다. 복소수 값을 갖는 입력 신호 x의 경우, PSD 추정값은 항상 길이가 nfft입니다. nfft가 빈 값으로 지정되면 디폴트 nfft가 사용됩니다.

nfft가 세그먼트 길이보다 크면 데이터가 0으로 채워집니다. nfft가 세그먼트 길이보다 작으면 길이가 nfft와 같아지도록 datawrap을 사용하여 세그먼트의 값이 순환됩니다.

데이터형: single | double

샘플 레이트로, 양의 스칼라로 지정됩니다. 샘플 레이트는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 샘플 레이트의 단위는 Hz입니다.

정규화 주파수로, 적어도 2개의 요소를 가진 행 벡터나 열 벡터로 지정됩니다. 정규화 주파수는 rad/sample을 단위로 사용합니다.

예: w = [pi/4 pi/2]

데이터형: double | single

주파수로, 적어도 2개의 요소를 가진 행 벡터나 열 벡터로 지정됩니다. 주파수는 단위 시간당 주기를 단위로 사용합니다. 단위 시간은 샘플 레이트 fs로 지정됩니다. fs의 단위가 샘플/초이면 f는 Hz 단위입니다.

예: fs = 1000; f = [100 200]

데이터형: double | single

PSD 추정값의 주파수 범위로, 'onesided', 'twosided' 또는 'centered'로 지정됩니다. 디폴트 값은 실수 값을 갖는 신호의 경우 'onesided'이고, 복소수 값을 갖는 신호의 경우 'twosided'입니다. 각 옵션에 대응되는 주파수 범위는 다음과 같습니다.

  • 'onesided' — 실수 값을 갖는 입력 신호 x의 단측 PSD 추정값을 반환합니다. nfft가 짝수이면 pxx의 길이는 nfft/2 + 1이고 구간 [0,π] rad/sample에 대해 계산됩니다. nfft가 홀수이면 pxx의 길이는 (nfft + 1)/2이고 구간은 [0,π) rad/sample입니다. fs가 선택적으로 지정된 경우 이에 대응되는 구간은 짝수 길이와 홀수 길이 nfft 각각에 대해 [0,fs/2] cycles/unit time 및 [0,fs/2) cycles/unit time입니다.

    이 함수는 총 전력을 보존하기 위해 0 및 나이퀴스트 주파수를 제외한 모든 주파수에서 전력에 2를 곱합니다.

  • 'twosided' — 실수 값 또는 복소수 값 입력 x의 양측 PSD 추정값을 반환합니다. 이 경우, pxx의 길이는 nfft이고 구간 [0,2π) rad/sample에 대해 계산됩니다. fs가 선택적으로 지정된 경우 구간은 [0,fs) cycles/unit time입니다.

  • 'centered' — 실수 값 또는 복소수 값 입력 x에 대해 중심이 맞춰진 양측 PSD 추정값을 반환합니다. 이 경우, pxx의 길이는 nfft이며, nfft가 짝수 길이이면 구간 (–π,π] rad/sample에 대해 계산되며, nfft가 홀수 길이이면 구간 (–π,π) rad/sample에 대해 계산됩니다. fs가 선택적으로 지정된 경우 이에 대응되는 구간은 짝수 길이와 홀수 길이 nfft 각각에 대해 (–fs/2, fs/2] cycles/unit time 및 (–fs/2, fs/2) cycles/unit time입니다.

데이터형: char | string

파워 스펙트럼 스케일링으로, 'psd' 또는 'power' 중 하나로 지정됩니다. spectrumtype을 생략하거나 'psd'를 지정하면 파워 스펙트럼 밀도가 반환됩니다. 'power'를 지정하면 PSD의 각 추정값이 윈도우의 등가 잡음 대역폭으로 스케일링됩니다. 각 주파수에서 전력의 추정값을 구하려면 'power' 옵션을 사용하십시오.

추적 모드로, 'mean', 'maxhold' 또는 'minhold'로 지정됩니다. 디폴트 값은 'mean'입니다.

  • 'mean' — 각 입력 채널의 Welch 스펙트럼 추정값을 반환합니다. pwelch는 모든 세그먼트의 파워 스펙트럼 추정값에 대한 평균을 내어 각 주파수 Bin에서 Welch 스펙트럼 추정값을 계산합니다.

  • 'maxhold' — 각 입력 채널의 최댓값 유지 스펙트럼을 반환합니다. pwelch는 모든 세그먼트의 파워 스펙트럼 추정값 중에서 최댓값을 유지하여 각 주파수 Bin에서 최댓값 유지 스펙트럼을 계산합니다.

  • 'minhold' — 각 입력 채널의 최솟값 유지 스펙트럼을 반환합니다. pwelch는 모든 세그먼트의 파워 스펙트럼 추정값 중에서 최솟값을 유지하여 각 주파수 Bin에서 최솟값 유지 스펙트럼을 계산합니다.

실제 PSD에 대한 포함 확률로, (0,1) 범위의 스칼라로 지정됩니다. 출력값 pxxc는 실제 PSD에 대한 probability × 100% 구간 추정값의 하한과 상한을 포함합니다.

출력 인수

모두 축소

PSD 추정값으로, 음이 아닌 실수 값 열 벡터나 행렬로 반환됩니다. pxx의 각 열은 x의 대응하는 열에 대한 PSD 추정값입니다. PSD 추정값의 단위는 단위 주파수당 시계열 데이터의 크기 단위의 제곱을 사용합니다. 예를 들어, 입력 데이터의 단위가 볼트이면 PSD 추정값의 단위는 단위 주파수당 제곱 볼트입니다. 볼트 단위의 시계열에 대해, 저항이 1Ω인 것으로 가정하고 샘플 레이트를 헤르츠로 지정할 경우 PSD 추정값의 단위는 헤르츠당 와트입니다.

정규화 주파수로, 실수 값 열 벡터로 반환됩니다. pxx가 단측 PSD 추정값인 경우, w의 구간은 nfft가 짝수이면 [0,π]이고, nfft가 홀수이면 [0,π)입니다. pxx가 양측 PSD 추정값인 경우, w의 구간은 [0,2π)입니다. DC 기준 PSD 추정값의 경우, w의 구간은 nfft가 짝수이면 (–π,π]이고, nfft가 홀수이면 (–π,π)입니다.

주기적 주파수로, 실수 값 열 벡터로 반환됩니다. 단측 PSD 추정값의 경우, f의 구간은 nfft가 짝수이면 [0,fs/2]이고, nfft가 홀수이면 [0,fs/2)입니다. 양측 PSD 추정값의 경우, f의 구간은 [0,fs)입니다. DC 기준 PSD 추정값의 경우, f의 구간은 nfft가 짝수 길이이면 (–fs/2, fs/2] cycles/unit time이고, nfft가 홀수 길이이면 (–fs/2, fs/2) cycles/unit time입니다.

신뢰한계로, 실수 값 요소를 가진 행렬로 반환됩니다. 행렬의 행 크기는 PSD 추정값 pxx의 길이와 같습니다. pxxcpxx보다 두 배 더 많은 열을 가집니다. 홀수 열은 신뢰구간의 하한을 포함하고, 짝수 열은 상한을 포함합니다. 따라서 pxxc(m,2*n-1)은 추정값 pxx(m,n)에 대응하는 신뢰 하한이고 pxxc(m,2*n)은 추정값에 대응하는 신뢰 상한입니다. 신뢰구간의 포함 확률은 probability 입력값으로 결정됩니다.

데이터형: single | double

세부 정보

모두 축소

Welch의 중첩 세그먼트 평균화 스펙트럼 추정

주기도는 광의의 정상 과정의 실제 파워 스펙트럼 밀도에 대한 일치 추정량(consistent estimator)이 아닙니다. 주기도의 분산을 줄이기 위한 Welch 기법은 시계열을 세그먼트로 나누는데 이 세그먼트는 보통 중첩됩니다.

Welch 방법은 각 세그먼트에 대해 수정된 주기도를 계산한 후 이러한 추정값의 평균을 내어 파워 스펙트럼 밀도의 추정값을 생성합니다. 이 과정이 광의의 정상 과정이고 Welch 방법이 시계열의 각기 다른 세그먼트에 대한 PSD 추정값을 사용하기 때문에 수정된 주기도는 실제 PSD의 대략적으로 상관 관계가 없는 추정값을 나타내며 평균화를 통해 변동성이 줄어듭니다.

Welch 방법이 수정된 주기도의 평균에 이르도록 일반적으로 세그먼트에 해밍 윈도우와 같은 윈도우 함수를 곱합니다. 세그먼트은 일반적으로 중첩되므로 한 세그먼트에서 윈도우에 인해 가늘어진 세그먼트의 시작과 끝에 있는 데이터 값은 인접한 세그먼트의 끝부분에서 떨어진 위치에 나타납니다. 이는 윈도우 생성으로 인해 정보가 손실되는 것을 방지합니다.

참고 문헌

[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++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장