주요 콘텐츠

periodogram

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

설명

pxx = periodogram(x)는 신호 x에 대한 주기도 파워 스펙트럼 밀도(PSD) 추정값을 반환합니다. 이 함수는 x의 열을 독립적인 채널로 처리합니다.

예제

[pxx,f] = periodogram(x,win,freqSpec)는 신호 x에 대한 주기도 PSD 추정값과 주파수 f(rad/sample)를 반환합니다. 여기서 periodogram 함수는 다음을 수행합니다.

  • win을 사용하여 신호를 여러 세그먼트로 나누고 윈도우를 적용합니다.

  • freqSpec에 지정된 DFT 점 개수 또는 주파수에서 이산 푸리에 변환(DFT)을 계산합니다.

이러한 입력 인수에 디폴트 값을 사용하려면 빈 값 []을 지정하십시오.

예제

[pxx,f] = periodogram(x,win,freqSpec,Fs)는 샘플 레이트 Fs를 지정하며, 순환 주파수 f(단위: Hz)를 반환합니다.

예제

[pxx,f] = periodogram(___,freqRange,spectrumType)는 위에 열거된 구문에 주파수 범위와 스펙트럼 유형도 지정합니다. 이러한 입력 인수 중 하나를 지정하거나 둘 다 지정할 수 있습니다.

예제

[rpxx,f,pxx,fc] = periodogram(___,"reassigned")는 각 PSD 추정값 또는 파워 스펙트럼 추정값을 해당 에너지의 중심 위치에 재할당합니다. 벡터 rpxxf의 각 요소에 재할당된 추정값의 합계를 포함합니다. 이 구문은 에너지 중심 주파수 fc도 반환합니다.

올바르게 국소화된 스펙트럼 성분이 신호에 포함된 경우 "reassigned" 인수는 더 선명한 주기도를 생성합니다.

예제

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

"reassigned" 옵션을 사용할 경우에는 신뢰구간을 지정할 수 없습니다.

예제

[___] = periodogram(___,Parent=h)는 주기도 PSD 추정값 또는 파워 스펙트럼을 대상 부모 컨테이너 h에 플로팅합니다.

예제

periodogram(___)(출력 인수 없음)은 현재 Figure 창에 주기도 PSD 추정값 또는 파워 스펙트럼을 플로팅합니다.

예제

예제

모두 축소

가산성 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/pi,pow2db(pxx))
xlabel("Normalized Frequency (\times \pi rad/sample)")
title("Periodogram Power Spectral Density Estimate")

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi rad/sample) 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 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 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인 단측 주기도가 반환됩니다.

rng("default")
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 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);

주기도를 플로팅합니다. 주기도의 약 0.1주기/년 지점에 피크가 있으며, 이는 대략 10년의 기간을 나타냅니다.

plot(f,pow2db(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.

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

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

plot(w1/pi,pxx1,w/pi,2*pxx,"o")
legend("pxx1","2*pxx")
xlabel("Normalized Frequency (\times \pi rad/sample)")
title("Periodogram Power Spectral Density Estimate")

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi rad/sample) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent pxx1, 2*pxx.

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

rng("default")
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입니다.

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% 신뢰한계를 갖는 주기도 PSD 추정값을 구합니다.

L = length(x);
[pxx,f,pxxc] = periodogram(x,rectwin(L),L,Fs,ConfidenceLevel=0.95);

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

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

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.

가산성 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 Periodogram Power Spectral Density Estimate, 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를 추정하고 플로팅합니다.

rng("default")
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 rad/sample), ylabel Power/Frequency (dB/(rad/sample)) contains 3 objects of type line.

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

type myPeriodogram
function [pxx,f] = myPeriodogram(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 myPeriodogram -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] = myPeriodogram_mex(x,hann(N));
hold on
plot(fMex/pi,pow2db(pxMex),"--")
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 rad/sample), ylabel Power/Frequency (dB/(rad/sample)) contains 2 objects of type line. These objects represent periodogram, MEX function.

R2026a 이후

4개의 신호에 대한 주기도 파워 스펙트럼 밀도(PSD) 추정값과 주기도 파워 스펙트럼을 지정된 대상 좌표축과 패널 컨테이너에 플로팅합니다.

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

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

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

fig = figure;
ax1 = axes(fig,Position=[0.09 0.1 0.60 0.45]);
ax2 = axes(fig,Position=[0.50 0.7 0.47 0.25]);

신호 x1x2의 주기도 PSD 추정값과 파워 스펙트럼을 각각 Figure의 남서쪽 좌표축과 북동쪽 좌표축에 플로팅합니다. 카이저 윈도우와 512개 DFT 점을 사용합니다.

g = kaiser(length(t),5);
nfft = 512;

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

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

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

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

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

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

periodogram(x3,g,nfft,Fs,"centered",Parent=ax3)
title(ax3,"Periodogram in UI Axes")

Figure contains an axes object. The axes object with title Periodogram 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="Periodogram in Panel Container", ...
    BackgroundColor="white");

신호 x4에 대한 재할당된 주기도 PSD 추정값을 패널 컨테이너에 플로팅합니다.

periodogram(x4,g,nfft,Fs,"reassigned",Parent=p)

Figure contains 2 axes objects and another object of type uipanel. Axes object 1 with title Reassigned Periodogram PSD Estimate, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type stem. Axes object 2 with title Periodogram in UI Axes, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type line.

입력 인수

모두 축소

입력 신호로, 벡터 또는 행렬로 지정됩니다. x를 행렬로 지정하면, periodogram 함수는 각 열을 독립적인 채널로 처리합니다.

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

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

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

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

참고

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

데이터형: single | double

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

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

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

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

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

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

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

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

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

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

데이터형: single | double

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

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

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

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

periodogram 함수는 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" 값을 지정하면 periodogram 함수는 총 전력을 보존하기 위해 0 및 나이퀴스트 주파수를 제외한 모든 주파수에서 전력에 2를 곱합니다.

  • x가 복소수 값인 경우 "onesided" 값은 지원되지 않습니다.

데이터형: char | string

파워 스펙트럼 스케일링으로, 다음 값 중 하나로 지정됩니다.

  • "psd"periodogram 함수는 파워 스펙트럼 밀도를 반환합니다.

  • "power"periodogram 함수는 PSD의 각 추정값을 윈도우의 등가 잡음 대역폭만큼 스케일링하고 각 주파수에서의 파워 추정값을 반환합니다. "reassigned"도 지정할 경우 periodogram 함수는 재할당하기 전에 각 주파수 Bin의 너비에 대해 PSD를 적분합니다.

다음 표에서는 입력 신호 x, 윈도우 벡터 win, 주파수 사양 freqSpec, 샘플 레이트 Fs가 주어진 경우, pxx에 반환되는 PSD 추정값과 파워 스펙트럼 추정값 간의 스케일링 관계를 보여줍니다.

샘플 레이트스케일링 관계
Fs가 지정됨

[~,~,~,psd] = periodogram(x,win,freqSpec,Fs,"psd");
[~,~,~,pow] = periodogram(x,win,freqSpec,Fs,"power");
이때 powpsd*enbw(win,Fs)와 동일합니다.

Fs가 지정되지 않음

[~,~,~,psd] = periodogram(x,win,freqSpec,"psd");
[~,~,~,pow] = periodogram(x,win,freqSpec,"power");
이때 powpsd*enbw(win,2*pi)와 동일합니다.

데이터형: char | string

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

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

R2026a 이후

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

Parent=h를 지정하면, periodogram 함수는 출력 인수를 사용하여 함수를 호출하는지 여부와 관계없이 주기도 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])는 좌표축 부모 컨테이너를 정의합니다. periodogram(x,[],[],[],Parent=h)를 지정하면 함수는 입력 신호 x의 주기도 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

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

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

세부 정보

모두 축소

참고 문헌

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

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장