Main Content

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

periodogram

주기도 파워 스펙트럼 밀도 추정값

설명

예제

pxx = periodogram(x)는 사각 윈도우를 사용하여 구한 입력 신호 x에 대한 주기도 파워 스펙트럼 밀도(PSD) 추정값 pxx를 반환합니다. x가 벡터이면 단일채널로 처리됩니다. x가 행렬이면 PSD가 각 열에 대해 개별적으로 계산되어 pxx의 대응 열에 저장됩니다. x가 실수 값이면 pxx는 단측 PSD 추정값입니다. x가 복소수 값이면 pxx는 양측 PSD 추정값입니다. 이산 푸리에 변환(DFT)에 포함된 점의 개수 nfft는 최대 256이거나 신호 길이보다 큰 첫 번째 2의 거듭제곱값입니다.

예제

pxx = periodogram(x,window)는 윈도우 window를 사용하여 수정된 주기도 PSD 추정값을 반환합니다. windowx와 길이가 같은 벡터입니다.

예제

pxx = periodogram(x,window,nfft)는 이산 푸리에 변환(DFT)에 포함된 nfft개 점을 사용합니다. nfft가 신호 길이보다 크면 x가 길이 nfft까지 0으로 채워집니다. nfft가 신호 길이보다 작으면 신호가 모듈로 nfft로 순환되고 datawrap을 사용하여 합해집니다. 예를 들어, 입력 신호 [1 2 3 4 5 6 7 8]nfft 값으로 4를 사용할 경우 sum([1 5; 2 6; 3 7; 4 8],2)의 주기도가 결과로 생성됩니다.

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

예제

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

예제

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

예제

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

예제

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

예제

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

[rpxx,f] = periodogram(___,'reassigned')는 각 PSD 추정값을 에너지 중심에 가장 가까운 주파수에 재할당합니다. rpxxf의 각 요소에 재할당된 추정값의 합계를 포함합니다.

예제

[rpxx,f,pxx,fc] = periodogram(___,'reassigned')는 재할당되지 않은 PSD 추정값 pxx와 에너지 중심 주파수 fc도 반환합니다. 'reassigned' 플래그를 사용할 경우 probability 신뢰구간을 지정할 수 없습니다.

예제

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

예제

periodogram(___)에 출력 인수를 지정하지 않으면 현재 Figure 창에 주기도 PSD 추정값(단위: 단위 주파수당 dB)을 플로팅합니다.

예제

모두 축소

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

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample을 갖는 사인파를 생성합니다. 신호의 길이는 320개 샘플입니다. 디폴트 사각 윈도우와 DFT 길이를 사용하여 주기도를 구합니다. DFT 길이는 신호 길이보다 큰 첫 번째 2의 거듭제곱값이거나 512개 점입니다. 신호가 실수 값을 가지고 짝수 길이이기 때문에 주기도가 단측이고 512/2+1개 점이 있습니다.

n = 0:319;
x = cos(pi/4*n)+randn(size(n));
[pxx,w] = periodogram(x);
plot(w,10*log10(pxx))

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

출력값을 지정하지 않고 periodogram을 사용하여 다시 플롯을 그립니다.

periodogram(x)

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

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

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 radian/sample을 갖는 사인파를 생성합니다. 신호의 길이는 320개 샘플입니다. 해밍 윈도우와 디폴트 DFT 길이를 사용하여 수정된 주기도를 구합니다. DFT 길이는 신호 길이보다 큰 첫 번째 2의 거듭제곱값이거나 512개 점입니다. 신호가 실수 값을 가지고 짝수 길이이기 때문에 주기도가 단측이고 512/2+1개 점이 있습니다.

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

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

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 radian/sample을 갖는 이산시간 정현파로 구성된 입력 신호의 주기도를 구합니다. 신호 길이와 동일한 DFT 길이를 사용합니다.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 radian/sample을 갖는 사인파를 생성합니다. 신호의 길이는 320개 샘플입니다. 디폴트 사각 윈도우 및 신호 길이와 같은 DFT 길이를 사용하여 주기도를 구합니다. 신호가 실수 값을 가지기 때문에 기본적으로 길이가 320/2+1인 단측 주기도가 반환됩니다.

n = 0:319;
x = cos(pi/4*n)+randn(size(n));
nfft = length(x);
periodogram(x,[],nfft)

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

1700년부터 1987년까지 매년 샘플링된 볼프(상대 흑점)수 데이터에 대한 주기도를 구합니다.

상대 흑점수 데이터를 불러옵니다. 디폴트 사각 윈도우와 DFT 점 개수(이 예제의 경우 512)를 사용하여 주기도를 구합니다. 이 데이터의 샘플 레이트는 1샘플/년입니다. 주기도를 플로팅합니다.

load sunspot.dat
relNums=sunspot(:,2);

[pxx,f] = periodogram(relNums,[],[],1);

plot(f,10*log10(pxx))
xlabel('Cycles/Year')
ylabel('dB / (Cycles/Year)')
title('Periodogram of Relative Sunspot Number Data')

Figure contains an axes object. The axes object with title Periodogram of Relative Sunspot Number Data, xlabel Cycles/Year, ylabel dB / (Cycles/Year) contains an object of type line.

앞의 그림에 나와 있는 주기도에서 약 0.1주기/년 지점에 피크가 있음을 확인할 수 있으며 이는 대략 10년의 기간을 나타냅니다.

가산성 N(0,1) 백색 잡음과 함께 각주파수 π/4 rad/sample과 π/2 rad/sample을 갖는 2개의 이산시간 정현파로 구성된 입력 신호의 주기도를 구합니다. π/4 rad/sample과 π/2 rad/sample에서 양측 주기도 추정값을 구합니다. 그 결과를 단측 주기도와 비교합니다.

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

[pxx,w] = periodogram(x,[],[pi/4 pi/2]);
pxx
pxx = 1×2

   14.0589    2.8872

[pxx1,w1] = periodogram(x);
plot(w1/pi,pxx1,w/pi,2*pxx,'o')
legend('pxx1','2 * pxx')
xlabel('\omega / \pi')

Figure contains an axes object. The axes object with xlabel omega blank / blank pi contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent pxx1, 2 * pxx.

얻어진 주기도 값은 단측 주기도 값의 1/2에 해당합니다. 특정 주파수 집합에서 주기도를 구하는 경우 출력값은 양측 추정값입니다.

N(0,1) 가산성 백색 잡음에서 주파수 100Hz와 200Hz를 갖는 두 개의 사인파로 구성된 신호를 생성합니다. 샘플링 주파수는 1kHz입니다. 100Hz와 200Hz에서 양측 주기도를 구합니다.

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

freq = [100 200];
pxx = periodogram(x,[],freq,fs)
pxx = 1×2

    0.2647    0.2313

다음 예제에서는 주기도에서 신뢰한계를 사용하는 것을 다룹니다. 통계적 유의성에 있어 필요 조건은 아니지만, 주변 PSD 추정값의 신뢰 하한이 신뢰 상한을 초과하는 주기도의 주파수는 시계열에서 유의미한 진동을 명확하게 나타냅니다.

가산성 백색 N(0,1) 잡음에서 중첩된 형태의 100Hz 사인파와 150Hz 사인파로 구성된 신호를 생성합니다. 두 사인파의 진폭은 1입니다. 샘플링 주파수는 1kHz입니다.

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

95% 신뢰한계를 갖는 주기도 PSD 추정값을 구합니다. 신뢰구간에 따라 주기도를 플로팅하고 100Hz와 150Hz 근처의 주파수 관심 영역을 확대합니다.

[pxx,f,pxxc] = periodogram(x,rectwin(length(x)),length(x),fs,...
    'ConfidenceLevel',0.95);

plot(f,10*log10(pxx))
hold on
plot(f,10*log10(pxxc),'-.')

xlim([85 175])
xlabel('Hz')
ylabel('dB/Hz')
title('Periodogram with 95%-Confidence Bounds')

Figure contains an axes object. The axes object with title Periodogram with 95%-Confidence Bounds, xlabel Hz, ylabel dB/Hz contains 3 objects of type line.

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

가산성 N(0,1) 잡음이 있는 100Hz 사인파의 주기도를 구합니다. 데이터는 1kHz로 샘플링됩니다. 'centered' 옵션을 사용하여 DC 기준 주기도를 구하고 결과를 플로팅합니다.

fs = 1000;
t = 0:0.001:1-0.001;
x = cos(2*pi*100*t)+randn(size(t));
periodogram(x,[],length(x),fs,'centered')

Figure contains an axes object. The axes object with title Power Spectral Density, xlabel Frequency (Hz), ylabel Power/frequency (dB/Hz) contains an object of type line.

백색 가우스 잡음에 묻힌 200Hz 정현파로 구성된 신호를 생성합니다. 신호는 1초 동안 1kHz로 샘플링됩니다. 이 잡음의 분산은 0.01²입니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

rng('default')

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
N = length(t);
x = sin(2*pi*t*200)+0.01*randn(size(t));

FFT를 사용하여 신호 길이로 정규화된 신호의 파워 스펙트럼을 계산합니다. 정현파가 Bin 내부에 있으므로 모든 전력이 단일 주파수 샘플에 집중되어 있습니다. 단측 스펙트럼을 플로팅합니다. 피크의 인근을 확대합니다.

q = fft(x,N);
ff = 0:Fs/N:Fs-Fs/N;

ffts = q*q'/N^2
ffts = 0.4997
ff = ff(1:floor(N/2)+1);
q = q(1:floor(N/2)+1);

stem(ff,abs(q)/N,'*')
axis([190 210 0 0.55])

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

periodogram을 사용하여 신호의 파워 스펙트럼을 계산합니다. 핸(Hann) 윈도우를 지정하고 FFT 길이를 1024로 지정합니다. 200Hz에서 추정된 전력과 실제 값 사이의 백분율 차이를 구합니다.

wind = hann(N);

[pun,fr] = periodogram(x,wind,1024,Fs,'power');

hold on
stem(fr,pun)

Figure contains an axes object. The axes object contains 2 objects of type stem.

periodogErr = abs(max(pun)-ffts)/ffts*100
periodogErr = 4.7349

파워 스펙트럼을 다시 계산하되, 이번에는 재할당을 사용합니다. 새 추정값을 플로팅하고 최댓값을 FFT 값과 비교합니다.

[pre,ft,pxx,fx] = periodogram(x,wind,1024,Fs,'power','reassigned');

stem(fx,pre)
hold off
legend('Original','Periodogram','Reassigned')

Figure contains an axes object. The axes object contains 3 objects of type stem. These objects represent Original, Periodogram, Reassigned.

reassignErr = abs(max(pre)-ffts)/ffts*100
reassignErr = 0.0779

'power' 옵션을 사용하여 특정 주파수에서 정현파의 전력을 추정합니다.

1초 동안 1kHz로 샘플링된 100Hz 정현파를 생성합니다. 사인파의 진폭은 1.8이고, 이는 1.8²/2 = 1.62의 전력과 같습니다. 'power' 옵션을 사용하여 전력을 추정합니다.

fs = 1000;
t = 0:1/fs:1-1/fs;
x = 1.8*cos(2*pi*100*t);
[pxx,f] = periodogram(x,hamming(length(x)),length(x),fs,'power');
[pwrest,idx] = max(pxx);
fprintf('The maximum power occurs at %3.1f Hz\n',f(idx))
The maximum power occurs at 100.0 Hz
fprintf('The power estimate is %2.2f\n',pwrest)
The power estimate is 1.62

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

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

w = pi./[2;3;4];
x = cos(w*n)' + randn(length(n),3);

periodogram(x)

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

윈도우를 사용하여 입력 신호의 수정된 주기도 PSD(파워 스펙트럼 밀도) 추정값을 반환하는 함수 periodogram_data.m을 만듭니다. 함수는 이산 푸리에 변환 점의 개수를 입력 신호의 길이와 동일하게 지정합니다.

type periodogram_data
function [pxx,f] = periodogram_data(inputData,window)
%#codegen
nfft = length(inputData);
[pxx,f] = periodogram(inputData,window,nfft);
end

codegen (MATLAB Coder)을 사용하여 MEX 파일 을 생성합니다.

  • 함수의 %#codegen 지시문은 이 MATLAB® 코드가 코드 생성을 위한 코드임을 나타냅니다.

  • -args 옵션은 MEX 파일에 대한 입력값의 크기, 클래스, 실수/복소수 여부를 정의하는 예제 인수를 지정합니다. 예를 들어, inputData를 1024×1 배정밀도 확률 벡터로 지정하고 window를 길이가 1024인 해밍 윈도우로 지정합니다. 이후 MEX 함수를 호출할 때 1024개 샘플을 갖는 입력 신호와 윈도우를 사용하게 됩니다.

  • MEX 함수에 다른 이름을 지정하려면 -o 옵션을 사용하십시오.

  • 코드 생성 리포트를 확인하려면 codegen 명령 끝에 -report 옵션을 추가하십시오.

codegen periodogram_data -args {randn(1024,1),hamming(1024)}
Code generation successful.

periodogram 함수와 생성한 MEX 함수를 사용하여 1024개 샘플을 갖는 잡음이 있는 정현파의 PSD 추정값을 계산합니다. 2π/5 rad/sample의 정규화 정현파 주파수와 핸 윈도우를 지정합니다. 두 추정값을 플로팅하여 두 값이 일치하는 것을 확인합니다.

N = 1024;
x = 2*cos(2*pi/5*(0:N-1)') + randn(N,1);
periodogram(x,hann(N))
[pxMex,fMex] = periodogram_data(x,hann(N));
hold on
plot(fMex/pi,pow2db(pxMex),':','Color',[0 0.4 0])
hold off
grid on
legend('periodogram','MEX function')

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 2 objects of type line. These objects represent periodogram, MEX function.

입력 인수

모두 축소

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

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

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

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

윈도우로, 입력 신호와 길이가 같은 행 벡터나 열 벡터로 지정됩니다. window를 빈 값으로 지정하면 periodogram은 사각 윈도우를 사용합니다. 'reassigned' 플래그와 빈 window를 지정하면 이 함수는 β = 38인 카이저 윈도우를 사용합니다.

데이터형: single | double

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

데이터형: 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'를 대신 사용하십시오. 'power'를 지정하면 PSD의 각 추정값이 윈도우의 등가 잡음 대역폭으로 스케일링됩니다. 'reassigned' 플래그가 사용된 경우는 예외입니다.

데이터형: char | string

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

출력 인수

모두 축소

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

주기적 주파수로, 실수 값 열 벡터로 반환됩니다. 단측 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입니다.

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

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

데이터형: single | double

재할당된 PSD 추정값으로, 음이 아닌 실수 값 열 벡터나 행렬로 반환됩니다. rpxx의 각 열은 x의 대응하는 열에 대해 재할당된 PSD 추정값입니다.

에너지 중심 주파수로, 벡터나 행렬로 지정됩니다.

세부 정보

모두 축소

주기도

주기도는 광의의 정상 확률 과정의 파워 스펙트럼 밀도(PSD)에 대한 비모수적 추정값입니다. 주기도는 자기상관 시퀀스의 편향 추정값에 대한 푸리에 변환입니다. 단위 시간당 fs개 샘플로 샘플링된 신호 xn의 경우 주기도는 다음과 같이 정의됩니다.

P^(f)=ΔtN|n=0N1xnej2πfΔtn|2,1/2Δt<f1/2Δt,

여기서 Δt는 샘플링 간격입니다. 단측 주기도의 경우, 총 전력이 보존되도록 0과 나이퀴스트 1/2Δt를 제외한 모든 주파수의 값에 2를 곱합니다.

주파수의 단위가 rad/sample이면 주기도가 다음과 같이 정의됩니다.

P^(ω)=12πN|n=0N1xnejωn|2,π<ωπ.

위 방정식의 주파수 범위는 freqrange 인수의 값에 따라 달라집니다. 입력 인수에서 freqrange에 대한 설명을 참조하십시오.

주기적 주파수에서 한 주기 1/Δt에 대한 실제 PSD P(f)의 적분값과 정규화 주파수에서 2π에 대한 실제 PSD의 적분값은 광의의 정상 확률 과정의 분산과 같습니다.

σ2=1/2Δt1/2ΔtP(f)df.

정규화 주파수의 경우 적분 한계를 적절하게 바꾸십시오.

수정된 주기도

수정된 주기도는 입력 시계열을 윈도우 함수로 곱합니다. 적합한 윈도우 함수는 음수가 아니며 시작점과 끝점에서 0으로 감쇠됩니다. 시계열을 윈도우 함수로 곱하면 데이터가 점차적으로 가늘어지므로 주기도에서 누설을 완화하는 데 도움이 됩니다. 이에 대한 예제는 Bias and Variability in the Periodogram 항목을 참조하십시오.

hn이 윈도우 함수이면 수정된 주기도는 다음과 같이 정의됩니다.

P^(f)=ΔtN|n=0N1hnxnej2πfΔtn|2,1/2Δt<f1/2Δt,

여기서 Δt는 샘플링 간격입니다.

주파수의 단위가 rad/sample이면 수정된 주기도는 다음과 같이 정의됩니다.

P^(ω)=12πN|n=0N1hnxnejωn|2,π<ωπ.

위 방정식의 주파수 범위는 freqrange 인수의 값에 따라 달라집니다. 입력 인수에서 freqrange에 대한 설명을 참조하십시오.

재할당된 주기도

재할당 기법은 스펙트럼 추정값을 더 명확하게 국소화할 수 있게 하고 더욱 쉽게 읽고 해석할 수 있는 주기도를 생성합니다. 이 기법은 각 PSD 추정값을 Bin의 기하학적 중심에서 떨어진 Bin의 에너지 중심에 재할당합니다. 이는 처프(Chirp)와 임펄스에 대해 정확하게 국소화할 수 있도록 해줍니다.

참고 문헌

[1] Auger, François, and Patrick Flandrin. "Improving the Readability of Time-Frequency and Time-Scale Representations by the Reassignment Method." IEEE® Transactions on Signal Processing. Vol. 43, May 1995, pp. 1068–1089.

[2] Fulop, Sean A., and Kelly Fitz. "Algorithms for computing the time-corrected instantaneous frequency (reassigned) spectrogram, with applications." Journal of the Acoustical Society of America. Vol. 119, January 2006, pp. 360–371.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장