pwelch
Welch의 파워 스펙트럼 밀도 추정값
구문
설명
[는 신호 pxx,f] = pwelch(x,win,nOverlap,freqSpec)x에 대한 Welch PSD 추정값과 주파수 f(rad/sample)를 반환합니다. 여기서 pwelch 함수는 다음을 수행합니다.
win을 사용하여 신호를 여러 세그먼트로 나누고 윈도우를 적용합니다.nOverlap에 지정된 중첩 길이를 사용하여 인접 세그먼트 간에 샘플을 중첩합니다.freqSpec에 지정된 DFT 지점 개수 또는 주파수에서, 윈도우가 적용된 각 세그먼트에 대해 이산 푸리에 변환(DFT)을 계산합니다.
이러한 입력 인수에 디폴트 값을 사용하려면 빈 값 []을 지정하십시오.
[___] = pwelch(___,는 위에 열거된 구문에 주파수 범위, 스펙트럼 유형, 추적 모드도 지정합니다. 이러한 입력 인수의 조합을 지정할 수 있습니다.freqRange,spectrumType,trace)
pwelch(___)를 출력 인수를 지정하지 않고 사용하면 Welch PSD 추정값 또는 파워 스펙트럼을 현재 Figure 창에 플로팅합니다.
예제
가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.
가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 길이는 개 샘플입니다.
rng("default")
n = 0:319;
x = cos(pi/4*n) + randn(size(n));디폴트 해밍 윈도우와 DFT 길이를 사용하여 Welch PSD 추정값을 구합니다. 디폴트 세그먼트 길이는 71개 샘플이고 DFT 길이는 256개 점이며, 이 경우 rad/sample의 주파수 분해능이 생성됩니다. 신호가 실수 값이므로 주기도는 단측이고 256/2+1개 점이 있습니다. Welch PSD 추정값을 플로팅합니다.
pxx = pwelch(x); pwelch(x)

계산을 반복합니다.
신호를 길이가 인 섹션으로 나눕니다. 이 작업은 50% 중첩을 갖는 세그먼트의 개수가 8에 최대한 근접하되 초과하지는 않도록 하는 가능한 한 가장 긴 섹션으로 나누는 것과 동일합니다.
해밍 윈도우를 사용하여 섹션에 윈도우를 적용합니다.
연속 섹션 간에 50% 중첩을 지정합니다.
개의 지점을 사용하여 FFT를 계산합니다. 여기서 입니다.
두 접근 방식이 동일한 결과를 제공하는지 확인합니다.
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
가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.
가산성 백색 잡음과 함께 각주파수 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개 점입니다. 이 경우 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")

가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.
가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 길이는 320개 샘플입니다.
rng("default")
n = 0:319;
x = cos(pi/4*n) + randn(size(n));신호를 100개 샘플 길이의 세그먼트로 나누어 Welch PSD 추정값을 구합니다. 신호 세그먼트에 100개 샘플 길이의 해밍 윈도우가 곱해집니다. 중첩된 샘플의 개수는 25입니다. DFT 길이는 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")

가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 Welch PSD 추정값을 구합니다.
가산성 백색 잡음과 함께 각주파수 rad/sample을 갖는 사인파를 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 길이는 320개 샘플입니다.
rng("default")
n = 0:319;
x = cos(pi/4*n) + randn(size(n));신호를 100개 샘플 길이의 세그먼트로 나누어 Welch PSD 추정값을 구합니다. 디폴트 중첩 50%를 사용합니다. 주파수 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")

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

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

절차를 반복하되, 이번에는 중심에 있는 파워 스펙트럼 추정값을 계산합니다.
[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"])

이 예제에서는 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")

가산성 백색 잡음에서 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

가산성 백색 가우스 잡음(AWGN)에서 3개의 정현파로 구성된 다중채널 신호의 샘플 1024개를 생성합니다. 정현파의 주파수는 rad/sample, rad/sample, 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)
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]);
신호 x1과 x2의 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)
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")

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)

입력 인수
입력 신호로, 벡터 또는 행렬로 지정됩니다. 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함수는x가nOverlap개의 중첩 샘플을 가지는 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% 중첩을 만드는 값을 사용합니다.세그먼트 길이가 지정되지 않은 경우 이 함수는
nOverlap을 ⌊Nx / 4.5⌋로 설정합니다. 여기서 Nx는 입력 신호의 길이이고 ⌊ ⌋ 기호는 바닥 함수를 나타냅니다. 이 작업은 50% 중첩을 갖는 세그먼트의 개수가 8개에 최대한 근접하되 초과하지는 않도록 하는 가능한 한 가장 긴 섹션으로 나누는 것과 동일합니다.음수가 아닌 정수 —
pwelch함수는 이 인수에 지정된 샘플 개수를 사용하여 인접 세그먼트를 중첩시킵니다.win이 스칼라이면nOverlap은win보다 작아야 합니다.win이 벡터이면nOverlap은win의 길이보다 작아야 합니다.
주파수 사양으로, 다음 값 중 하나로 지정됩니다.
빈 값
[]—pwelch함수는 윈도우 길이보다 크거나 같은 첫 번째 2의 거듭제곱과 256 중에서 더 큰 값에 해당하는 개수의 DFT 지점을 사용하여 스펙트럼 추정값을 계산합니다.양의 정수 —
pwelch함수는 이 인수에 지정된 DFT 지점 개수를 사용하여 스펙트럼 추정값을 계산합니다.freqSpec가 세그먼트 길이보다 크면pwelch함수는 세그먼트 데이터를 0으로 채웁니다.freqSpec가 세그먼트 길이보다 작으면pwelch함수는freqSpec를 기준으로 모듈로(modulo) 연산을 수행하여 세그먼트를 나누고, 나눠진 세그먼트 프레임들을 합산합니다.
요소가 두 개 이상인 벡터 —
pwelch함수는freqSpec에 지정된 주파수에서 스펙트럼 추정값을 계산합니다.샘플 레이트
Fs를 지정하는 경우pwelch함수는freqSpec를Fs와 단위가 동일한 순환 주파수로 가정합니다.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를 반환합니다.
freqRange | freqSpec | pxx의 행 개수 |
| |
|---|---|---|---|---|
|
| |||
"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"); pow는 psd*enbw(win,Fs)와 동일합니다. win은 윈도우 벡터입니다. |
Fs가 지정되지 않음 | psd = pwelch(x,win,nOverlap,freqSpec,"psd"); pow = pwelch(x,win,nOverlap,freqSpec,"power"); pow는 psd*enbw(win,2*pi)와 동일합니다. |
추적 모드로, 다음 값 중 하나로 지정됩니다.
"mean"—pwelch함수는 각 주파수 Bin에서 모든 세그먼트의 파워 스펙트럼 추정값에 대한 평균을 내어 각 입력 채널의 Welch 스펙트럼 추정값을 반환합니다."maxhold"—pwelch함수는 각 주파수 Bin에서 모든 세그먼트 중 전력 스펙트럼 최댓값을 선택하여, 각 입력 채널에 대한 최댓값 유지 스펙트럼을 반환합니다."minhold"—pwelch함수는 각 주파수 Bin에서 모든 세그먼트 중 전력 스펙트럼 최솟값을 선택하여, 각 입력 채널에 대한 최솟값 유지 스펙트럼을 반환합니다.
PSD 추정값에 대한 포함 확률로, (0,1) 범위의 스칼라로 지정됩니다.
ConfidenceLevel=p와 pxxc를 지정하면, 이 함수는 실제 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)가 포함됩니다.
세부 정보
주기도는 광의의 정상 과정의 실제 파워 스펙트럼 밀도에 대한 일치 추정량(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.
확장 기능
pwelch 함수는 tall형 배열을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
입력값
x는 tall형 행 벡터가 아니어야 합니다.win인수가 반드시 지정되어야 합니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
pwelch 함수는 스레드 기반 환경을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
출력 인수가 없는 구문은 지원되지 않습니다.
자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨pwelch 함수는 Parent 입력 인수를 사용하여 지정한 부모 좌표축 또는 패널 컨테이너에 출력값을 플로팅할 수 있습니다.
pwelch 함수는 GPU(그래픽 처리 장치)에 대한 코드 생성을 지원합니다. CUDA® 코드를 생성하려면 MATLAB Coder™와 GPU Coder™가 필요합니다.
pwelch 함수는 코드 생성 시 단정밀도 가변 크기 창 입력값을 지원합니다.
pwelch 함수는 단정밀도 입력값을 지원합니다.
이제 플롯 만들기 라이브 편집기 작업을 사용하여 pwelch 함수의 출력값을 대화형 방식으로 시각화할 수 있습니다. 다양한 차트 유형을 선택하고 선택적 파라미터를 설정할 수 있습니다. 또한 이 작업을 통해 라이브 스크립트의 일부가 되는 코드가 자동으로 생성됩니다.
MATLAB Command
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.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)