주요 콘텐츠

pwelch

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

설명

pxx = pwelch(x)는 Welch의 중첩 세그먼트 평균화 추정량(Welch's overlapped segment averaging estimator)을 사용하여 신호 x에 대한 파워 스펙트럼 밀도(PSD) 추정값을 반환합니다. 이 함수는 x의 열을 독립적인 채널로 처리합니다.

예제

[pxx,f] = pwelch(x,win,nOverlap,freqSpec)는 신호 x에 대한 Welch PSD 추정값과 주파수 f(rad/sample)를 반환합니다. 여기서 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)는 Welch PSD 추정값 또는 파워 스펙트럼을 대상 부모 컨테이너 h에 플로팅합니다.

예제

pwelch(___)를 출력 인수를 지정하지 않고 사용하면 Welch PSD 추정값 또는 파워 스펙트럼을 현재 Figure 창에 플로팅합니다.

예제

예제

모두 축소

가산성 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 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));

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

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

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

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 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,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 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(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 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(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) 백색 잡음에서 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,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.

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

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

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개 샘플) 중첩합니다.

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

신뢰구간에 따라 WOSA PSD 추정값을 플로팅하고 100Hz와 150Hz 근처의 주파수 관심 영역을 확대합니다. 100Hz와 150Hz의 바로 인근에 있는 신뢰 하한은 100Hz와 150Hz 주변을 벗어난 신뢰 상한보다 상당히 높습니다.

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) 백색 잡음에서 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");

결과를 플로팅합니다. -100Hz와 100Hz에서의 전력은 진폭이 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) 백색 가우스 잡음(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];

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개의 신호에 대한 Welch 파워 스펙트럼 밀도(PSD) 추정값과 Welch 파워 스펙트럼을 지정된 대상 좌표축과 패널 컨테이너에 플로팅합니다.

3초 동안 10kHz의 샘플 레이트를 사용하여 4개의 진동 신호를 만듭니다.

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

Welch PSD 추정값과 파워 스펙트럼을 대상 좌표축에 플로팅하기

새 Figure 창의 남서쪽 코너와 북동쪽 코너에 두 개의 좌표축을 만듭니다.

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

신호 x1x2의 Welch PSD 추정값과 Welch 파워 스펙트럼을 각각 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.

Welch PSD 추정값을 대상 UI 좌표축에 플로팅하기

새 UI Figure 창의 북서쪽 코너에 좌표축을 만듭니다.

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

신호 x3에 대한 Welch PSD 추정값을 Figure 좌표축에 플로팅합니다. 중심이 0kHz에 맞춰진 주파수를 표시합니다.

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.

Welch PSD 추정값을 대상 패널 컨테이너에 플로팅하기

UI Figure 창의 남동쪽 코너에 패널 컨테이너를 추가합니다.

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

신호 x4에 대한 Welch 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개의 샘플을 중첩시키면서 정수 개수의 세그먼트로 정확히 나눌 수 없는 경우, pwelch 함수는 x를 적절하게 자릅니다.

사용 가능한 윈도우 목록은 윈도우 항목을 참조하십시오.

참고

디폴트 해밍 윈도우에는 42.5dB의 사이드로브 감쇠량이 있어 이 값 미만의 스펙트럼 성분(피크 스펙트럼 성분 기준)은 가려질 수 있습니다. 다른 윈도우를 선택하면 분해능(예: 사각 윈도우 사용)과 사이드로브 감쇠량(예: 핸 윈도우 사용) 간에 상호 절충할 수 있습니다. 자세한 내용은 윈도우 디자이너를 참조하십시오.

예: hann(N+1)(1-cos(2*pi*(0:N)'/N))/2는 모두 길이가 N + 1인 핸 윈도우를 지정합니다.

데이터형: single | double

중첩 샘플의 개수로, 빈 값([]) 또는 음이 아닌 정수로 지정됩니다.

  • 빈 값([]) — pwelch 함수는 세그먼트 간에 50% 중첩을 만드는 값을 사용합니다.

    세그먼트 길이가 지정되지 않은 경우 이 함수는 nOverlapNx / 4.5⌋로 설정합니다. 여기서 Nx는 입력 신호의 길이이고 ⌊ ⌋ 기호는 바닥 함수를 나타냅니다. 이 작업은 50% 중첩을 갖는 세그먼트의 개수가 8개에 최대한 근접하되 초과하지는 않도록 하는 가능한 한 가장 긴 섹션으로 나누는 것과 동일합니다.

  • 음수가 아닌 정수 — pwelch 함수는 이 인수에 지정된 샘플 개수를 사용하여 인접 세그먼트를 중첩시킵니다.

    • win이 스칼라이면 nOverlapwin보다 작아야 합니다.

    • win이 벡터이면 nOverlapwin의 길이보다 작아야 합니다.

주파수 사양으로, 다음 값 중 하나로 지정됩니다.

  • 빈 값 []pwelch 함수는 윈도우 길이보다 크거나 같은 첫 번째 2의 거듭제곱과 256 중에서 더 큰 값에 해당하는 개수의 DFT 지점을 사용하여 스펙트럼 추정값을 계산합니다.

  • 양의 정수 — pwelch 함수는 이 인수에 지정된 DFT 지점 개수를 사용하여 스펙트럼 추정값을 계산합니다.

    • freqSpec가 세그먼트 길이보다 크면 pwelch 함수는 세그먼트 데이터를 0으로 채웁니다.

    • freqSpec가 세그먼트 길이보다 작으면 pwelch 함수는 freqSpec를 기준으로 모듈로(modulo) 연산을 수행하여 세그먼트를 나누고, 나눠진 세그먼트 프레임들을 합산합니다.

  • 요소가 두 개 이상인 벡터 — pwelch 함수는 freqSpec에 지정된 주파수에서 스펙트럼 추정값을 계산합니다.

    • 샘플 레이트 Fs를 지정하는 경우 pwelch 함수는 freqSpecFs와 단위가 동일한 순환 주파수로 가정합니다.

    • Fs를 지정하지 않으면 pwelch 함수는 freqSpec를 정규화 주파수(단위: rad/sample)로 가정합니다.

예: freqSpec = 512는 512개 DFT 지점을 지정합니다.

예: freqSpec = pi./[8 4 2]는 세 개의 정규화 주파수로 구성된 벡터를 지정합니다.

데이터형: single | double

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

  • Fs를 빈 값([])으로 지정하면, pwelch 함수는 입력 신호 x의 샘플 레이트를 1Hz로 가정합니다.

  • Fs를 지정하지 않으면, pwelch 함수는 입력 신호 x의 샘플 레이트를 2π rad/sample로 가정합니다.

PSD 추정값 또는 파워 스펙트럼의 주파수 범위로, "onesided", "twosided" 또는 "centered"로 지정됩니다.

pwelch 함수는 freqRange에 지정된 값, freqSpec에 지정된 DFT 점의 개수가 짝수인지 홀수인지 여부, Fs가 지정되었는지 여부에 따라 행 개수와 주파수 구간을 달리하여 pxx를 반환합니다.

freqRangefreqSpecpxx의 행 개수

pxx의 주파수 구간

Fs가 지정되지 않음

Fs가 지정됨

"onesided"
(x가 실수 값인 경우 디폴트 값)
짝수freqSpec/2 + 1[0,π] rad/sample[0,Fs/2] cycles/unit time
홀수(freqSpec + 1)/2[0,π) rad/sample[0,Fs/2) cycles/unit time
"twosided"
(x가 복소수 값인 경우 디폴트 값)
짝수 또는 홀수freqSpec[0,2π) rad/sample[0,Fs) cycles/unit time
"centered"짝수freqSpec(–π,π] rad/sample(–Fs/2,Fs/2] cycles/unit time
홀수(–π,π) rad/sample(–Fs/2,Fs/2) cycles/unit time

참고

  • 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 함수는 각 주파수 Bin에서 모든 세그먼트의 파워 스펙트럼 추정값에 대한 평균을 내어 각 입력 채널의 Welch 스펙트럼 추정값을 반환합니다.

  • "maxhold"pwelch 함수는 각 주파수 Bin에서 모든 세그먼트 중 전력 스펙트럼 최댓값을 선택하여, 각 입력 채널에 대한 최댓값 유지 스펙트럼을 반환합니다.

  • "minhold"pwelch 함수는 각 주파수 Bin에서 모든 세그먼트 중 전력 스펙트럼 최솟값을 선택하여, 각 입력 채널에 대한 최솟값 유지 스펙트럼을 반환합니다.

PSD 추정값에 대한 포함 확률로, (0,1) 범위의 스칼라로 지정됩니다.

ConfidenceLevel=ppxxc를 지정하면, 이 함수는 실제 PSD에 대한 p × 100% 구간 추정값의 하한과 상한을 포함한 pxxc를 출력합니다.

R2026a 이후

대상 부모 컨테이너로, Axes 객체, UIAxes 객체 또는 Panel 객체로 지정됩니다.

Parent=h를 지정하면, pwelch 함수는 출력 인수를 사용하여 함수를 호출하는지 여부와 관계없이 Welch 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)를 지정하면 함수는 입력 신호 x의 Welch PSD를 부모 컨테이너 h에 플로팅합니다.

출력 인수

모두 축소

PSD 추정값 또는 파워 스펙트럼으로, 음이 아닌 실수 값 열 벡터나 행렬로 반환됩니다.

  • pxx의 각 열은 spectrumType을 지정하는 방법에 따라 x의 각 열에 대응되는 PSD 추정값 또는 파워 스펙트럼입니다.

  • PSD 추정값의 단위는 단위 주파수당 입력 신호의 크기 단위의 제곱을 사용합니다. 예를 들어, 입력 데이터 x가 볼트 단위이고, 샘플 레이트 Fs를 헤르츠 단위로 지정하고, 저항을 1Ω으로 가정하는 경우 PSD 추정값의 단위는 헤르츠당 와트입니다.

  • 파워 스펙트럼의 단위는 신호의 크기 단위의 제곱을 사용합니다. 예를 들어, 입력 데이터 x가 볼트 단위이고 저항을 1Ω으로 가정하는 경우 PSD 추정값의 단위는 와트입니다.

PSD 추정값과 연결된 주파수로, 실수 값 열 벡터로 반환됩니다.

  • Fs를 지정할 경우 f에는 순환 주파수(단위: Hz)가 포함됩니다.

  • Fs를 지정하지 않으면 f에는 정규화 주파수(단위: rad/sample)가 포함됩니다.

신뢰한계로, 실수 값 행렬로 반환됩니다.

  • pxxc의 행 개수는 pxx와 동일합니다.

  • pxxc의 열 개수는 pxx의 두 배입니다.

    • 홀수 열은 신뢰구간의 하한을 포함합니다.

    • 짝수 열은 신뢰구간의 상한을 포함합니다.

    따라서 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 이전에 개발됨

모두 확장