주요 콘텐츠

pspectrum

주파수 영역과 시간-주파수 영역의 신호 분석

설명

p = pspectrum(x)x의 파워 스펙트럼을 반환합니다.

  • x가 벡터이거나 데이터로 구성된 벡터를 갖는 타임테이블인 경우 단일 채널로 처리됩니다.

  • x가 행렬, 행렬 변수를 갖는 타임테이블 또는 여러 개의 벡터 변수를 갖는 타임테이블인 경우 각 채널에 대해 스펙트럼이 개별적으로 계산되고 p의 개별 열에 저장됩니다.

예제

p = pspectrum(x,fs)fs 레이트로 샘플링된 벡터 또는 행렬 신호의 파워 스펙트럼을 반환합니다.

예제

p = pspectrum(x,t)t에 지정된 시점에서 샘플링된 행렬 신호 또는 벡터의 파워 스펙트럼을 반환합니다.

예제

p = pspectrum(___,type)은 함수를 통해 수행되는 스펙트럼 분석의 종류를 지정합니다. type'power', 'spectrogram' 또는 'persistence'로 지정합니다. 이 구문은 위에 열거된 구문에 사용할 수 있습니다.

예제

p = pspectrum(___,Name,Value)는 이름-값 쌍의 인수를 사용하여 추가 옵션을 지정합니다. 옵션으로는 주파수 분해능 대역폭과 인접 세그먼트 간의 중첩 백분율 등이 있습니다.

예제

[p,f] = pspectrum(___)p에 포함된 스펙트럼 추정값에 대응하는 주파수를 반환합니다.

예제

[p,f,t] = pspectrum(___,'spectrogram')은 단시간 파워 스펙트럼 추정값을 계산할 때 사용되는, 윈도우가 적용된 세그먼트 중심에 대응하는 시점으로 구성된 벡터도 반환합니다.

예제

[p,f,pwr] = pspectrum(___,'persistence')는 지속성 스펙트럼에 포함된 추정값에 대응하는 파워 값으로 구성된 벡터도 반환합니다.

pspectrum(___)에 출력 인수를 지정하지 않으면 현재 Figure 창에 스펙트럼 추정값을 플로팅합니다. 함수는 10 log10(p)를 사용해 p를 dB로 변환하여 플로팅합니다.

예제

예제

모두 축소

128개의 2채널 복소수 정현파 샘플을 생성합니다.

  • 첫 번째 채널은 단위 진폭과 정규화 정현파 주파수 π/4 rad/sample을 갖습니다.

  • 두 번째 채널은 진폭 1/2 과 정규화 주파수 π/2 rad/sample을 갖습니다.

각 채널의 파워 스펙트럼을 계산하고 플로팅합니다. 주파수 범위 0.15π rad/sample~0.6π rad/sample을 확대합니다. pspectrum은 신호의 주파수 성분이 Bin 내에 정확히 포함되는 경우 해당 Bin에서의 진폭이 신호의 실제 평균 전력이 되도록 스펙트럼을 스케일링합니다. 복소수 지수의 평균 전력은 진폭의 제곱입니다. 신호의 이산 푸리에 변환을 계산하여 확인합니다. 자세한 내용은 Measure Power of Deterministic Periodic Signals 항목을 참조하십시오.

N = 128;
x = [1 1/sqrt(2)].*exp(1j*pi./[4;2]*(0:N-1)).';

[p,f] = pspectrum(x);

plot(f/pi,p)
hold on
stem(0:2/N:2-1/N,abs(fft(x)/N).^2)
hold off
axis([0.15 0.6 0 1.1])
legend("Channel "+[1;2]+", "+["pspectrum" "fft"])
grid

Figure contains an axes object. The axes object contains 4 objects of type line, stem. These objects represent Channel 1, pspectrum, Channel 2, pspectrum, Channel 1, fft, Channel 2, fft.

백색 가우스 잡음을 포함하는, 296밀리초 동안 1kHz로 샘플링된 정현파 신호를 생성합니다. 정현파 주파수를 200Hz로, 잡음 분산을 0.1²으로 지정합니다. MATLAB® 타임테이블에 신호와 신호의 시간 정보를 저장합니다.

Fs = 1000;
t = (0:1/Fs:0.296)';
x = cos(2*pi*t*200)+0.1*randn(size(t));
xTable = timetable(seconds(t),x);

신호의 파워 스펙트럼을 계산합니다. 스펙트럼을 데시벨로 표현한 다음 플로팅합니다.

[pxx,f] = pspectrum(xTable);

plot(f,pow2db(pxx))
grid on
xlabel('Frequency (Hz)')
ylabel('Power Spectrum (dB)')
title('Default Frequency Resolution')

Figure contains an axes object. The axes object with title Default Frequency Resolution, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type line.

정현파의 파워 스펙트럼을 다시 계산하고, 이번에는 더 성긴 주파수 분해능 25Hz를 사용합니다. 출력 인수 없이 pspectrum 함수를 사용하여 스펙트럼을 플로팅합니다.

pspectrum(xTable,'FrequencyResolution',25)

Figure contains an axes object. The axes object with title Fres = 25 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type line.

1초 동안 3kHz로 샘플링된 신호를 생성합니다. 신호는 볼록 2차 처프이며, 그 주파수는 측정하는 동안 300Hz에서 1300Hz로 증가합니다. 이 처프는 백색 가우스 잡음에 묻혀 있습니다.

fs = 3000;
t = 0:1/fs:1-1/fs;

x1 = chirp(t,300,t(end),1300,'quadratic',0,'convex') + ...
    randn(size(t))/100;

사각 윈도우를 사용하여 신호의 양측 파워 스펙트럼을 계산하고 플로팅합니다. 실수 신호의 경우 pspectrum은 기본적으로 단측 스펙트럼을 플로팅합니다. 양측 스펙트럼을 플로팅하려면 TwoSided를 true로 설정하십시오.

pspectrum(x1,fs,'Leakage',1,'TwoSided',true)

Figure contains an axes object. The axes object with title Fres = 83.3333 Hz, xlabel Frequency (kHz), ylabel Power Spectrum (dB) contains an object of type line.

동일한 지속 시간과 샘플 레이트를 갖는 복소수 값 신호를 생성합니다. 신호는 정현적으로 변하는 주파수 성분을 갖는 처프이며 백색 잡음에 묻혀 있습니다. 신호의 스펙트로그램을 계산하고 폭포 플롯으로 표시합니다. 복소수 값 신호의 경우 스펙트로그램은 기본적으로 양측 스펙트럼입니다.

x2 = exp(2j*pi*100*cos(2*pi*2*t)) + randn(size(t))/100;

[p,f,t] = pspectrum(x2,fs,'spectrogram');

waterfall(f,t,p')
xlabel('Frequency (Hz)')
ylabel('Time (seconds)')
wtf = gca;
wtf.XDir = 'reverse';
view([30 45])

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Time (seconds) contains an object of type patch.

2초 동안 100Hz로 샘플링된 2채널 신호를 생성합니다.

  1. 첫 번째 채널은 20Hz 톤과 21Hz 톤으로 구성되어 있습니다. 두 톤 모두 단위 진폭을 갖습니다.

  2. 두 번째 채널도 두 개의 톤으로 구성되어 있습니다. 한 톤은 단위 진폭과 20Hz 주파수를 갖습니다. 다른 톤은 1/100 진폭과 30Hz 주파수를 갖습니다.

fs = 100;
t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t) + [1 1/100].*sin(2*pi*[21 30].*t);

이 신호에 백색 잡음을 포함시킵니다. 40dB의 신호 대 잡음비를 지정합니다. 신호를 플로팅합니다.

x = x + randn(size(x)).*std(x)/db2mag(40);

plot(t,x)

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

두 채널의 스펙트럼을 계산하고 그 결과를 표시합니다.

pspectrum(x,t)

Figure contains an axes object. The axes object with title Fres = 1.2886 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

스펙트럼 누설의 디폴트 값 0.5는 약 1.29Hz의 분해능 대역폭에 해당합니다. 첫 번째 채널의 두 톤은 분해되지 않습니다. 두 번째 채널의 30Hz 톤은 표시되기는 하지만 20Hz 톤과 비교하면 매우 약합니다.

누설을 약 0.74Hz의 분해능에 해당하는 0.85로 늘립니다. 두 번째 채널의 약한 톤이 명확히 표시됩니다.

pspectrum(x,t,'Leakage',0.85)

Figure contains an axes object. The axes object with title Fres = 736.8785 mHz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

누설을 최댓값으로 늘립니다. 분해능 대역폭은 약 0.5Hz입니다. 첫 번째 채널의 두 톤이 분해됩니다. 두 번째 채널의 약한 톤은 큰 윈도우 사이드로브들에 가려집니다.

pspectrum(x,t,'Leakage',1)

Figure contains an axes object. The axes object with title Fres = 500 mHz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

전압 제어 발진기와 3개의 가우스 원자로 구성된 신호를 생성합니다. 신호는 2초 동안 fs=2kHz로 샘플링됩니다.

fs = 2000;
tx = 0:1/fs:2;
gaussFun = @(A,x,mu,f) exp(-(x-mu).^2/(2*0.03^2)).*sin(2*pi*f.*x)*A';
s = gaussFun([1 1 1],tx',[0.1 0.65 1],[2 6 2]*100)*1.5;
x = vco(chirp(tx+.1,0,tx(end),3).*exp(-2*(tx-1).^2),[0.1 0.4]*fs,fs);
x = s+x';

단시간 푸리에 변환

pspectrum 함수를 사용하여 STFT를 계산합니다.

  • Nx개 샘플 신호를 80/2000=40 밀리초의 시간 분해능에 상응하는 샘플 길이 M=80인 세그먼트로 나눕니다.

  • 인접 세그먼트 간 중첩 샘플 개수 L=16을 지정하거나 20%가 중첩되도록 지정합니다.

  • 카이저 윈도우로 각 세그먼트에 윈도우를 적용하고 누설 =0.7을 지정합니다.

M = 80;
L = 16;
lk = 0.7;

[S,F,T] = pspectrum(x,fs,"spectrogram", ...
    TimeResolution=M/fs,OverlapPercent=L/M*100, ...
    Leakage=lk);

spectrogram 함수로 구한 결과와 비교합니다.

  • 윈도우 길이를 지정하고 샘플에서 직접 중첩합니다.

  • pspectrum은 항상 카이저 윈도우를 g(n)으로 사용합니다. 누설 과 윈도우의 형태 인자 ββ=40×(1-)의 관계를 갖습니다.

  • pspectrum은 이산 푸리에 변환을 계산할 때 항상 NDFT=1024개 점을 사용합니다. 양측 주파수 범위 또는 중심 주파수 범위에서 변환을 계산하려는 경우 이 숫자를 지정할 수 있습니다. 그러나 실수 신호의 디폴트인 단측 변환의 경우 spectrogram1024/2+1=513개 점을 사용합니다. 또는 이 예제와 같이 변환을 계산할 주파수 벡터를 지정할 수 있습니다.

  • 신호를 정확히 k=Nx-LM-L개 세그먼트로 나눌 수 없는 경우 spectrogram은 신호를 자르고 pspectrum은 신호에 0을 채워 여분의 세그먼트를 만듭니다. 출력값을 동등하게 만들려면 마지막 세그먼트와 시간 벡터의 마지막 요소를 제거하십시오.

  • spectrogram은 크기 제곱이 스펙트로그램인 STFT를 반환합니다. pspectrum은 이미 제곱되었지만 제곱 전에 인자 ng(n)으로 나눈 세그먼트별 파워 스펙트럼을 반환합니다.

  • 단측 변환의 경우 pspectrum은 스펙트로그램에 추가 인자 2를 추가합니다.

g = kaiser(M,40*(1-lk));

k = (length(x)-L)/(M-L);
if k~=floor(k)
    S = S(:,1:floor(k));
    T = T(1:floor(k));
end

[s,f,t] = spectrogram(x/sum(g)*sqrt(2),g,L,F,fs);

waterplot 함수를 사용하여 두 함수로 계산된 스펙트로그램을 표시합니다.

subplot(2,1,1)
waterplot(sqrt(S),F,T)
title("pspectrum")

subplot(2,1,2)
waterplot(s,f,t)
title("spectrogram")

Figure contains 2 axes objects. Axes object 1 with title pspectrum, xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch. Axes object 2 with title spectrogram, xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch.

maxd = max(max(abs(abs(s).^2-S)))
maxd = 
2.4419e-08

파워 스펙트럼 및 편의 플롯

spectrogram 함수에는 세그먼트별 파워 스펙트럼 또는 파워 스펙트럼 밀도에 대응하는 네 번째 인수가 있습니다. ps 인수는 pspectrum의 출력값과 유사하게 이미 제곱되었으며 정규화 인자 ng(n)을 포함합니다. 실수 신호의 단측 스펙트로그램의 경우 추가 인자 2를 꼭 포함해야 합니다. 함수의 스케일링 인수를 "power"로 설정합니다.

[~,~,~,ps] = spectrogram(x*sqrt(2),g,L,F,fs,"power");

max(abs(S(:)-ps(:)))
ans = 
2.4419e-08

출력 인수 없이 호출하면 pspectrumspectrogram 모두 데시벨 단위로 신호의 스펙트로그램을 플로팅합니다. 단측 스펙트로그램의 경우 인자 2를 포함시킵니다. 두 플롯의 컬러맵을 동일하게 설정합니다. x 제한을 동일한 값으로 설정하여 pspectrum 플롯 끝에 여분의 세그먼트가 보이도록 합니다. spectrogram 플롯에서 y축에 주파수를 표시합니다.

subplot(2,1,1)
pspectrum(x,fs,"spectrogram", ...
    TimeResolution=M/fs,OverlapPercent=L/M*100, ...
    Leakage=lk)
title("pspectrum")
cc = clim;
xl = xlim;

subplot(2,1,2)
spectrogram(x*sqrt(2),g,L,F,fs,"power","yaxis")
title("spectrogram")
clim(cc)
xlim(xl)

Figure contains 2 axes objects. Axes object 1 with title pspectrum, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image. Axes object 2 with title spectrogram, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

function waterplot(s,f,t)
% Waterfall plot of spectrogram
    waterfall(f,t,abs(s)'.^2)
    set(gca,XDir="reverse",View=[30 50])
    xlabel("Frequency (Hz)")
    ylabel("Time (s)")
end

광대역 신호에 포함된 협대역 간섭 신호를 시각화하겠습니다.

500초 동안 1kHz로 샘플링된 처프를 생성합니다. 측정하는 동안 처프의 주파수는 180Hz에서 220Hz로 증가합니다.

fs = 1000;
t = (0:1/fs:500)';

x = chirp(t,180,t(end),220) + 0.15*randn(size(t));

신호에는 210Hz 정현파도 포함되어 있습니다. 정현파는 진폭이 0.05이고 총 신호 지속 시간의 1/6 동안만 존재합니다.

idx = floor(length(x)/6);
x(1:idx) = x(1:idx) + 0.05*cos(2*pi*t(1:idx)*210);

신호의 스펙트로그램을 계산합니다. 주파수 범위를 100Hz ~ 290Hz로 제한합니다. 시간 분해능을 1초로 지정합니다. 두 신호 성분이 표시됩니다.

pspectrum(x,fs,'spectrogram', ...
    'FrequencyLimits',[100 290],'TimeResolution',1)

Figure contains an axes object. The axes object with title Fres = 3.9101 Hz, Tres = 1 s, xlabel Time (minutes), ylabel Frequency (Hz) contains an object of type image.

신호의 파워 스펙트럼을 계산합니다. 약한 정현파가 처프에 의해 가려집니다.

pspectrum(x,fs,'FrequencyLimits',[100 290])

Figure contains an axes object. The axes object with title Fres = 5.0081 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type line.

신호의 지속성 스펙트럼을 계산합니다. 이제 두 신호 성분이 명확히 보입니다.

pspectrum(x,fs,'persistence', ...
    'FrequencyLimits',[100 290],'TimeResolution',1)

Figure contains an axes object. The axes object with title Fres = 3.9101 Hz, Tres = 1 s, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type image.

2초 동안 1kHz로 샘플링된 2차 처프(Chirp)를 생성합니다. 처프는 초기 주파수가 100Hz이고 t = 1초일 때 200Hz로 증가합니다. pspectrum 함수의 디폴트 설정을 사용하여 스펙트로그램을 계산합니다 waterfall 함수를 사용하여 스펙트로그램을 플로팅합니다.

fs = 1e3;
t = 0:1/fs:2;
y = chirp(t,100,1,200,"quadratic");

[sp,fp,tp] = pspectrum(y,fs,"spectrogram");

waterfall(fp,tp,sp')
set(gca,XDir="reverse",View=[60 60])
ylabel("Time (s)")
xlabel("Frequency (Hz)")

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch.

재할당 스펙트로그램을 계산하고 표시합니다.

[sr,fr,tr] = pspectrum(y,fs,"spectrogram",Reassign=true);

waterfall(fr,tr,sr')
set(gca,XDir="reverse",View=[60 60])
ylabel("Time (s)")
xlabel("Frequency (Hz)")

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch.

시간 분해능을 0.2초로 지정하여 스펙트로그램을 다시 계산합니다. 출력 인수 없이 pspectrum 함수를 사용하여 결과를 시각화합니다.

pspectrum(y,fs,"spectrogram",TimeResolution=0.2)

Figure contains an axes object. The axes object with title Fres = 12.8337 Hz, Tres = 200 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

동일한 시간 분해능을 사용하여 재할당된 스펙트로그램을 계산합니다.

pspectrum(y,fs,"spectrogram",TimeResolution=0.2,Reassign=true)

Figure contains an axes object. The axes object with title Fres = 12.8337 Hz, Tres = 200 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

4kHz로 샘플링된 신호를 생성합니다. 이 신호는 디지털 전화의 모든 키를 누르는 것과 유사합니다. 이 신호를 MATLAB® 타임테이블로 저장합니다.

fs = 4e3;
t = 0:1/fs:0.5-1/fs;

ver = [697 770 852 941];
hor = [1209 1336 1477];

tones = [];

for k = 1:length(ver)
    for l = 1:length(hor)
        tone = sum(sin(2*pi*[ver(k);hor(l)].*t))';
        tones = [tones;tone;zeros(size(tone))];
    end
end

% To hear, type soundsc(tones,fs)

S = timetable(seconds(0:length(tones)-1)'/fs,tones);

신호의 스펙트로그램을 계산합니다. 시간 분해능을 0.5초로, 인접 세그먼트 간의 중첩을 0으로 지정합니다. 누설을 0.85로 지정합니다. 이 값은 핸(Hann) 윈도우를 사용하여 데이터에 윈도우를 적용하는 것과 거의 동일합니다.

pspectrum(S,'spectrogram', ...
    'TimeResolution',0.5,'OverlapPercent',0,'Leakage',0.85)

Figure contains an axes object. The axes object with title Fres = 15.6403 Hz, Tres = 500 ms, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

스펙트로그램을 통해, 각 키가 1/2초 동안 눌려 있고 다른 키를 누르기 전에 1/2초 동안 무음으로 일시 중지된 것을 알 수 있습니다. 첫 번째 발신음의 주파수 성분은 약 697Hz와 1209Hz에 집중되어 있고 이는 DTMF 표준에서 숫자 '1'에 해당합니다.

입력 인수

모두 축소

입력 신호로, 벡터, 행렬 또는 MATLAB®timetable형으로 지정됩니다.

x가 불균일하게 샘플링된 경우 pspectrum은 신호를 균일한 그리드로 보간하여 스펙트럼 추정값을 계산합니다. 이때 함수는 선형 보간을 사용하며, 샘플 시간을 인접한 시간 지점 간의 차분의 중앙값이라고 가정합니다. 불균일하게 샘플링된 신호를 사용하려면, 중앙값 시간 간격과 평균 시간 간격이 다음 조건을 충족해야 합니다.

1100<Median time intervalMean time interval<100.

예: cos(pi./[4;2]*(0:159))'+randn(160,2)는 백색 잡음에 묻힌 정현파로 구성된 2채널 신호입니다.

예: timetable(seconds(0:4)',rand(5,2))는 4초 동안 1Hz로 샘플링된 2채널 확률 변수를 지정합니다.

예: timetable(seconds(0:4)',rand(5,1),rand(5,1))은 4초 동안 1Hz로 샘플링된 2채널 확률 변수를 지정합니다.

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

샘플 레이트로, 양의 숫자형 스칼라로 지정됩니다.

시간 값으로, 샘플 간의 시간 간격을 나타내는 벡터, datetime형 또는 duration형 배열, duration형 스칼라로 지정됩니다.

예: seconds(0:1/100:1)은 1초 동안 100Hz로 샘플링되었음을 나타내는 duration형 배열입니다.

예: seconds(1)은 연속 신호 샘플 간의 시간 차분이 1초임을 나타내는 duration형 스칼라입니다.

계산할 스펙트럼 유형으로, 'power', 'spectrogram' 또는 'persistence'로 지정됩니다.

  • 'power' — 입력값의 파워 스펙트럼을 계산합니다. 이 옵션을 사용하여 정상(Stationary) 신호의 주파수 성분을 분석할 수 있습니다. 자세한 내용은 스펙트럼 계산 항목을 참조하십시오.

  • 'spectrogram' — 입력값의 스펙트로그램을 계산합니다. 이 옵션을 사용하여 신호의 주파수 성분이 시간에 따라 어떻게 변하는지 분석할 수 있습니다. 자세한 내용은 스펙트로그램 계산 항목을 참조하십시오.

  • 'persistence' — 입력값의 지속성 파워 스펙트럼을 계산합니다. 이 옵션을 사용하여 신호에 특정 주파수 성분이 존재하는 시간을 시각화할 수 있습니다. 자세한 내용은 지속성 스펙트럼 계산 항목을 참조하십시오.

참고

'spectrogram''persistence' 옵션은 다중채널 입력값을 지원하지 않습니다.

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'Leakage',1,'Reassign',true,'MinThreshold',-35는 사각 윈도우를 사용하여 데이터에 윈도우를 적용하고, 재할당된 스펙트럼 추정값을 계산하고, –35dB보다 작은 모든 값을 0으로 설정합니다.

주파수 대역 제한으로, 'FrequencyLimits'와 함께 요소를 2개 가진 숫자형 벡터가 쉼표로 구분되어 지정됩니다.

  • 입력값에 시간 정보가 포함되어 있으면 주파수 대역은 Hz로 표현됩니다.

  • 입력값에 시간 정보가 포함되어 있지 않으면 주파수 대역은 rad/sample의 정규화된 단위로 표현됩니다.

기본적으로, pspectrum은 전체 나이퀴스트 범위에서 스펙트럼을 계산합니다.

  • 지정된 주파수 대역에 나이퀴스트 범위를 벗어나는 영역이 포함되어 있으면 pspectrum은 해당 주파수 대역을 자릅니다.

  • 지정된 주파수 대역이 나이퀴스트 범위를 완전히 벗어나면 pspectrum은 오류를 발생시킵니다.

나이퀴스트 범위에 대한 자세한 내용은 스펙트럼 계산 항목을 참조하십시오.

x가 불균일하게 샘플링된 경우 pspectrum은 신호를 균일한 그리드로 선형 보간하고, 유효 샘플 레이트를 인접한 시간 지점 간의 차분 중앙값의 역수로 정의합니다. 유효 샘플 레이트를 기준으로 'FrequencyLimits'를 표현하십시오.

예: [0.2*pi 0.7*pi]는 0.2π rad/sample과 0.7π rad/sample 사이에서 시간 정보 없는 신호의 스펙트럼을 계산합니다.

주파수 분해능 대역폭으로, 'FrequencyResolution'과 함께 실수 숫자형 스칼라가 쉼표로 구분되어 지정되고 입력값에 시간 정보가 있는 경우에는 Hz 단위로, 시간 정보가 없는 경우에는 rad/sample의 정규화된 단위로 표현됩니다. 이 인수는 'TimeResolution'과 동시에 지정할 수 없습니다. 이 인수의 디폴트 값은 입력 데이터의 크기에 따라 달라집니다. 자세한 내용은 스펙트로그램 계산 항목을 참조하십시오.

예: pi/100π/100 rad/sample의 주파수 분해능을 사용하여 시간 정보가 없는 신호의 스펙트럼을 계산합니다.

스펙트럼 누설로, 'Leakage'와 함께 0과 1 사이의 실수 숫자형 스칼라가 쉼표로 구분되어 지정됩니다. 'Leakage'는 메인로브 폭을 기준으로 카이저 윈도우 사이드로브 감쇠량을 조정하고, 분해능 개선과 누설 감소 간에 균형을 맞춥니다.

  • 큰 누설 값은 간격이 좁은 톤을 분해하지만, 가까이 있는 약한 톤을 가려지게 합니다.

  • 작은 누설 값은 큰 톤 근처에 있는 작은 톤을 찾아내지만, 가까이 있는 주파수들을 모두 불분명하게 만듭니다.

예: 'Leakage',0은 스펙트럼 분해능을 희생하여 누설을 최소한으로 줄입니다.

예: 'Leakage',0.85는 핸(Hann) 윈도우를 사용하여 데이터에 윈도우를 적용한 것과 거의 같습니다.

예: 'Leakage',1은 사각 윈도우를 사용하여 데이터에 윈도우를 적용한 것과 동일하며, 누설을 최대화하지만 스펙트럼 분해능을 개선합니다.

0이 아닌 값에 대한 하한으로, 'MinThreshold'와 함께 실수형 스칼라가 쉼표로 구분되어 지정됩니다. pspectrumtype 인수의 값에 따라 'MinThreshold'를 다르게 구현합니다.

  • 'power' 또는 'spectrogram' - pspectrum10 log10(p) ≤ 'MinThreshold'가 되는 p의 요소를 0으로 설정합니다. 'MinThreshold'는 데시벨을 단위로 사용하여 지정하십시오.

  • 'persistence'pspectrum'MinThreshold'보다 작은 p의 요소를 0으로 설정합니다. 'MinThreshold'는 0%와 100% 사이로 지정하십시오.

지속성 스펙트럼의 전력 Bin 개수로, 'NumPowerBins'와 함께 20과 1024 사이의 정수가 쉼표로 구분되어 지정됩니다.

스펙트로그램 또는 지속성 스펙트럼의 인접 세그먼트 간 중첩으로, 'OverlapPercent'와 함께 구간 [0, 100)의 실수형 스칼라가 쉼표로 구분되어 지정됩니다. 이 인수의 디폴트 값은 스펙트럼 윈도우에 따라 달라집니다. 자세한 내용은 스펙트로그램 계산 항목을 참조하십시오.

재할당 옵션으로, 'Reassign'과 함께 논리값이 쉼표로 구분되어 지정됩니다. 이 옵션을 true로 설정할 경우 pspectrum은 시간과 주파수 재할당을 수행하여 스펙트럼 추정값을 더 명확하게 국소화합니다. 재할당 기법은 더 읽기 쉽고 해석하기 쉬운 주기도와 스펙트로그램을 생성합니다. 이 기법은 각 스펙트럼 추정값을 Bin의 기하학적 중심 대신에 Bin의 에너지 중심에 재할당합니다. 이는 처프(Chirp)와 임펄스에 대해 정확하게 국소화할 수 있도록 해줍니다.

스펙트로그램 또는 지속성 스펙트럼의 시간 분해능으로, 'TimeResolution'과 함께 실수형 스칼라가 쉼표로 구분되어 지정되고 입력값에 시간 정보가 있는 경우에는 초 단위로, 시간 정보가 없는 경우에는 샘플 개수를 나타내는 정수로 표현됩니다. 이 인수는 스펙트로그램 또는 지속성 스펙트럼 추정값을 형성하는 단시간 파워 스펙트럼을 계산하는 데 사용되는 세그먼트의 지속 기간을 조정합니다. 'TimeResolution''FrequencyResolution'과 동시에 지정할 수 없습니다. 이 인수의 디폴트 값은 입력 데이터의 크기와 주파수 분해능(지정된 경우)에 따라 달라집니다. 자세한 내용은 스펙트로그램 계산 항목을 참조하십시오.

양측 스펙트럼 추정값으로, 'TwoSided'와 함께 논리값이 쉼표로 구분되어 지정됩니다.

  • 이 옵션이 true이면 함수는 [–π, π] 구간에 대해 중심이 맞춰진 양측 스펙트럼 추정값을 계산합니다. 입력값에 시간 정보가 있으면 [–fs/2, fs/2] 구간에 대해 추정값이 계산됩니다. 여기서 fs는 유효 샘플 레이트입니다.

  • 이 옵션이 false이면 함수는 나이퀴스트 범위 [0, π]에 대해 단측 스펙트럼 추정값을 계산합니다. 입력값에 시간 정보가 있으면 [0, fs/2] 구간에 대해 추정값이 계산됩니다. 여기서 fs는 유효 샘플 레이트입니다. 총 전력을 보존하기 위해 이 함수는 0 및 나이퀴스트 주파수를 제외한 모든 주파수에서 전력에 2를 곱합니다. 이 옵션은 실수 신호에만 유효합니다.

지정하지 않는 경우, 'TwoSided'의 디폴트 값은 실수 입력 신호의 경우 false이고, 복소수 입력 신호의 경우 true입니다.

출력 인수

모두 축소

스펙트럼으로, 벡터 또는 행렬로 반환됩니다. 스펙트럼의 유형과 크기는 type 인수 값에 따라 달라집니다.

  • 'power'px의 각 채널에 대한 파워 스펙트럼 추정값을 포함합니다. 이 경우 p는 크기가 Nf×Nch입니다. 여기서 Nff의 길이이고 Nchx의 채널 개수입니다. pspectrum은 신호의 주파수 성분이 Bin 내에 정확히 포함되는 경우 해당 Bin에서의 진폭이 신호의 실제 평균 전력이 되도록 스펙트럼을 스케일링합니다. 예를 들어, 정현파의 평균 전력은 정현파 진폭의 제곱의 절반입니다. 자세한 내용은 Measure Power of Deterministic Periodic Signals 항목을 참조하십시오.

  • 'spectrogram'px의 단시간으로 국소화된 파워 스펙트럼의 추정값을 포함합니다. 이 경우 p의 크기는 Nf×Nt이고, 여기서 Nff의 길이, Ntt의 길이입니다.

  • 'persistence'p는 지정된 시간과 주파수 위치에서 신호가 지정된 전력 수준의 성분을 가질 확률(백분율로 표현됨)을 포함합니다. 이 경우 p의 크기는 Npwr × Nf이고, 여기서 Npwrpwr의 길이, Nff의 길이입니다.

스펙트럼 주파수로, 벡터로 반환됩니다. 입력 신호에 시간 정보가 포함되어 있으면 f에는 주파수(Hz로 표현됨)가 포함됩니다. 입력 신호에 시간 정보가 포함되어 있지 않으면 주파수는 rad/sample의 정규화된 단위로 표현됩니다.

스펙트로그램의 시간 값으로, 초 단위의 시간 값으로 구성된 벡터 또는 duration형 배열로 반환됩니다. 입력값에 시간 정보가 없으면 t에는 샘플 개수가 포함됩니다. t에는 단시간 파워 스펙트럼 추정값을 계산하는 데 사용되는 데이터 세그먼트 중심에 대응하는 시간 값이 포함됩니다.

  • pspectrum에 대한 입력값이 timetable형인 경우 t는 입력 타임테이블의 시간 값과 동일한 형식을 갖습니다.

  • pspectrum에 대한 입력값이 숫자형, duration형 또는 datetime형 배열로 지정된 일련의 시점에서 샘플링된 숫자형 벡터인 경우 t는 입력 시간 값과 동일한 유형과 형식을 갖습니다.

  • pspectrum에 대한 입력값이 연속 샘플 간에 지정된 시간 차분의 숫자형 벡터인 경우 tduration형 배열입니다.

지속성 스펙트럼의 전력 값으로, 벡터로 반환됩니다.

세부 정보

모두 축소

참고 문헌

[1] harris, fredric j. “On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform.” Proceedings of the IEEE®. Vol. 66, January 1978, pp. 51–83.

[2] Welch, Peter D. "The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms." IEEE Transactions on Audio and Electroacoustics. Vol. 15, June 1967, pp. 70–73.

확장 기능

모두 확장

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

버전 내역

R2017b에 개발됨

모두 확장