이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

spectrogram

단시간 푸리에 변환(STFT)을 사용하는 스펙트로그램

구문

s = spectrogram(x)
s = spectrogram(x,window)
s = spectrogram(x,window,noverlap)
s = spectrogram(x,window,noverlap,nfft)
[s,w,t] = spectrogram(___)
[s,f,t] = spectrogram(___,fs)
[s,w,t] = spectrogram(x,window,noverlap,w)
[s,f,t] = spectrogram(x,window,noverlap,f,fs)
[___,ps] = spectrogram(___)
[___] = spectrogram(___,'reassigned')
[___,ps,fc,tc] = spectrogram(___)
[___] = spectrogram(___,freqrange)
[___] = spectrogram(___,spectrumtype)
[___] = spectrogram(___,'MinThreshold',thresh)
spectrogram(___)
spectrogram(___,freqloc)

설명

예제

s = spectrogram(x)는 입력 신호 x의 단시간 푸리에 변환(Short-time Fourier Transform)을 반환합니다. s의 각 열은 단시간으로 국소화된 x의 주파수 성분에 대한 추정값을 포함합니다.

s = spectrogram(x,window)window를 사용하여 신호를 여러 세그먼트로 나누고 윈도우를 적용합니다.

예제

s = spectrogram(x,window,noverlap)은 인접 세그먼트 간에 noverlap개의 샘플이 중첩되도록 적용합니다.

예제

s = spectrogram(x,window,noverlap,nfft)nfft개 샘플링 점을 사용하여 이산 푸리에 변환을 계산합니다.

[s,w,t] = spectrogram(___)은 정규화 주파수로 구성된 벡터 w와 스펙트로그램이 계산된 시점으로 구성된 벡터 t를 반환합니다. 이 구문은 위에 열거된 구문에 사용할 수 있습니다.

예제

[s,f,t] = spectrogram(___,fs)는 샘플 레이트 fs의 값으로 표현되는 주기적 주파수로 구성된 벡터 f를 반환합니다. fsspectrogram에 대한 다섯 번째 입력값이어야 합니다. 샘플 레이트를 입력하고 위에 열거된 옵션 인수의 디폴트 값을 그대로 사용하려면 이 인수를 빈 값 []로 지정하십시오.

예제

[s,w,t] = spectrogram(x,window,noverlap,w)w에 지정된 정규화 주파수의 스펙트로그램을 반환합니다.

[s,f,t] = spectrogram(x,window,noverlap,f,fs)f에 지정된 주기적 주파수의 스펙트로그램을 반환합니다.

[___,ps] = spectrogram(___)은 전력 스펙트럼 밀도(PSD)의 추정값이나 각 세그먼트의 전력 스펙트럼을 포함하는 행렬 ps도 반환합니다.

예제

[___] = spectrogram(___,'reassigned')는 각 PSD 또는 전력 스펙트럼 추정값을 해당 에너지의 중심 위치에 재할당합니다. 올바르게 국소화된 시간 성분 또는 스펙트럼 성분이 신호에 포함된 경우 이 옵션은 더 매끄러운 스펙트로그램을 생성합니다.

예제

[___,ps,fc,tc] = spectrogram(___)은 각 PSD 또는 전력 스펙트럼 추정값의 에너지 중심에 해당하는 주파수와 시간을 행렬 fctc로 반환합니다.

[___] = spectrogram(___,freqrange)freqrange로 지정된 주파수 범위에 대한 PSD 또는 전력 스펙트럼 추정값을 반환합니다. freqrange에 유효한 옵션은 'onesided', 'twosided', 'centered'입니다.

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

예제

[___] = spectrogram(___,'MinThreshold',thresh)는 10log10(ps) ≤ thresh가 되는 ps 요소를 0으로 설정합니다. thresh는 데시벨을 단위로 사용하여 지정하십시오.

예제

spectrogram(___)(출력 인수 없음)은 현재 Figure 창에 스펙트로그램을 플로팅합니다.

예제

spectrogram(___,freqloc)은 주파수를 플로팅할 축을 지정합니다.

예제

모두 축소

정현파 간의 합으로 구성된 신호의 개 샘플을 생성합니다. 정현파의 정규화 주파수는 rad/sample 및 rad/sample입니다. 더 높은 주파수를 가진 정현파의 진폭은 상대 정현파 진폭의 10배입니다.

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

w0 = 2*pi/5;
x = sin(w0*n)+10*sin(2*w0*n);

함수 디폴트 값을 사용하여 단시간 푸리에 변환을 계산합니다. 스펙트로그램을 플로팅합니다.

s = spectrogram(x);

spectrogram(x,'yaxis')

계산을 반복합니다.

  • 신호를 길이가 인 섹션으로 나눕니다.

  • 해밍 윈도우를 사용하여 섹션에 윈도우를 적용합니다.

  • 연속 섹션 간에 50% 중첩을 지정합니다.

  • 개의 지점을 사용하여 FFT를 계산합니다. 여기서 입니다.

두 접근 방식이 동일한 결과를 제공하는지 확인합니다.

Nx = length(x);
nsc = floor(Nx/4.5);
nov = floor(nsc/2);
nff = max(256,2^nextpow2(nsc));

t = spectrogram(x,hamming(nsc),nov,nff);

maxerr = max(abs(abs(t(:))-abs(s(:))))
maxerr = 0

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

ns = 8;
ov = 0.5;
lsc = floor(Nx/(ns-(ns-1)*ov));

t = spectrogram(x,lsc,floor(ov*lsc),nff);

maxerr = max(abs(abs(t(:))-abs(s(:))))
maxerr = 0

2초 동안 1kHz로 샘플링된 2차 처프(Chirp) x를 생성합니다. 처프의 주파수는 처음에는 100Hz이고 t = 1초 지점에서는 200Hz를 넘어섭니다.

t = 0:0.001:2;
x = chirp(t,100,1,200,'quadratic');

x의 스펙트로그램을 계산하고 표시합니다.

  • 신호에 해밍 윈도우를 적용하고 길이가 128인 섹션으로 신호를 나눕니다.

  • 인접 섹션 간에 120개 샘플을 중첩하도록 지정합니다.

  • 개 주파수와 개 시간 Bin에서 스펙트럼을 구합니다.

spectrogram(x,128,120,128,1e3)

해밍 윈도우를 블랙맨 윈도우로 바꿉니다. 중첩할 샘플 개수를 60으로 줄입니다. 값이 위에서 아래로 증가하도록 시간 축을 플로팅합니다.

spectrogram(x,blackman(128),60,128,1e3)
ax = gca;
ax.YDir = 'reverse';

100Hz에서 시작하여 t = 1초에서 200Hz를 넘어서는 2차 처프의 각 세그먼트에 대한 PSD를 계산하고 표시합니다. 샘플 레이트 1kHz, 세그먼트 샘플 길이 128개, 중첩 샘플 길이 120개를 지정합니다. 128개 지점에 DFT를 적용하고, 디폴트 해밍 윈도우를 사용합니다.

t = 0:0.001:2;
x = chirp(t,100,1,200,'quadratic');

spectrogram(x,128,120,128,1e3,'yaxis')
title('Quadratic Chirp')

DC에서 시작하여 t = 1초에서 150Hz를 넘어서는 선형 처프의 각 세그먼트에 대한 PSD를 계산하고 표시합니다. 샘플 레이트 1kHz, 세그먼트 샘플 길이 256개, 중첩 샘플 길이 250개를 지정합니다. 디폴트 해밍 윈도우를 사용하고 256개 지점에 DFT를 적용합니다.

t = 0:0.001:2;
x = chirp(t,0,1,150);

spectrogram(x,256,250,256,1e3,'yaxis')
title('Linear Chirp')

20Hz에서 시작하여 t = 1초에서 60Hz를 넘어서는, 1kHz로 샘플링된 로그 처프의 각 세그먼트에 대한 PSD를 계산하고 표시합니다. 세그먼트 샘플 길이 256개, 중첩 샘플 길이 250개를 지정합니다. 디폴트 해밍 윈도우를 사용하고 256개 지점에 DFT를 적용합니다.

t = 0:0.001:2;
x = chirp(t,20,1,60,'logarithmic');

spectrogram(x,256,250,[],1e3,'yaxis')
title('Logarithmic Chirp')

주파수 축에 로그 스케일을 사용합니다. 스펙트로그램은 선이 됩니다.

ax = gca;
ax.YScale = 'log';

spectrogram 함수를 사용하여 신호의 순시 주파수를 측정하고 추적합니다.

2초 동안 1kHz로 샘플링된 2차 처프(Chirp)를 생성합니다. 주파수가 처음에는 100Hz이고 1초 후 200Hz로 증가하도록 처프를 지정합니다.

Fs = 1000;
t = 0:1/Fs:2-1/Fs;
y = chirp(t,100,1,200,'quadratic');

spectrogram 함수에 구현된 단시간 푸리에 변환을 사용하여 처프의 스펙트럼을 추정합니다. 신호에 해밍 윈도우를 적용하고 길이가 100인 섹션으로 신호를 나눕니다. 인접 섹션 간 중첩 샘플 길이를 80개로 지정하고 개 주파수에서 스펙트럼을 구합니다. 기본적으로 표시되는 컬러바를 숨깁니다.

spectrogram(y,100,80,100,Fs,'yaxis')
view(-77,72)
shading interp
colorbar off

개 시점 각각에서 전력 스펙트럼 밀도의 최댓값을 구하여 처프 주파수를 추적합니다. 스펙트로그램을 2차원 그래픽으로 봅니다. 컬러바를 복원합니다.

[s,f,t,p] = spectrogram(y,100,80,100,Fs);

[q,nd] = max(10*log10(p));

hold on
plot3(t,f(nd),q,'r','linewidth',4)
hold off
colorbar
view(2)

다양한 정현파 주파수 성분을 갖는 처프의 512개 샘플을 생성합니다.

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

x = exp(1j*pi*sin(8*n/N)*32);

이 처프에 대해 중심이 맞춰진 양측 단시간 푸리에 변환을 계산합니다. 신호를 32개 샘플 세그먼트로 나누고 중첩 샘플 길이를 16개로 지정합니다. 64개 DFT 점을 지정합니다. 스펙트로그램을 플로팅합니다.

[scalar,fs,ts] = spectrogram(x,32,16,64,'centered');

spectrogram(x,32,16,64,'centered','yaxis')

구간 에서 간격이 균일한 64개의 주파수에 대해 스펙트로그램을 계산하여 동일한 결과를 구합니다. 옵션 'centered'는 필요하지 않습니다.

fintv = -pi+pi/32:pi/32:pi;

[vector,fv,tv] = spectrogram(x,32,16,fintv);

spectrogram(x,32,16,fintv,'yaxis')

2초 동안 1kHz로 샘플링된 처프 신호를 생성합니다. 주파수가 처음에는 100Hz이고 1초 후 200Hz로 증가하도록 처프를 지정합니다.

Fs = 1000;
t = 0:1/Fs:2;
y = chirp(t,100,1,200,'quadratic');

신호의 재할당 스펙트로그램을 추정합니다.

  • 신호에 형태 파라미터 을 사용하는 카이저 윈도우를 적용하고 길이가 128인 섹션으로 신호를 나눕니다.

  • 인접 섹션 간에 120개 샘플을 중첩하도록 지정합니다.

  • 개 주파수와 개 시간 Bin에서 스펙트럼을 구합니다.

spectrogram(y,kaiser(128,18),120,128,Fs,'reassigned','yaxis')

2초 동안 1kHz로 샘플링된 처프 신호를 생성합니다. 주파수가 처음에는 100Hz이고 1초 후 200Hz로 증가하도록 처프를 지정합니다.

Fs = 1000;
t = 0:1/Fs:2;
y = chirp(t,100,1,200,'quadratic');

신호의 시간 종속 전력 스펙트럼 밀도(PSD)를 추정합니다.

  • 신호에 형태 파라미터 을 사용하는 카이저 윈도우를 적용하고 길이가 128인 섹션으로 신호를 나눕니다.

  • 인접 섹션 간에 120개 샘플을 중첩하도록 지정합니다.

  • 개 주파수와 개 시간 Bin에서 스펙트럼을 구합니다.

각 PSD 추정값의 중심 주파수와 시간을 출력합니다. dB보다 작은 PSD의 요소는 0으로 설정합니다.

[~,~,~,pxx,fc,tc] = spectrogram(y,kaiser(128,18),120,128,Fs, ...
    'MinThreshold',-30);

중심 주파수와 시간의 함수로 0이 아닌 요소를 플로팅합니다.

plot(tc(pxx>0),fc(pxx>0),'.')

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

nSamp = 2048;
Fs = 1024;
t = (0:nSamp-1)'/Fs;

1초 동안 신호는 400Hz 정현파와 오목한 2차 처프(Chirp)로 구성됩니다. 250Hz의 주파수에서 시작 및 종료하고, 150Hz에서 최솟값을 이루며 구간 중간을 중심으로 대칭이 되는 처프를 지정합니다.

t1 = t(1:nSamp/2);

x11 = sin(2*pi*400*t1);
x12 = chirp(t1-t1(nSamp/4),150,nSamp/Fs,1750,'quadratic');
x1 = x11+x12;

신호의 나머지 부분은 감소하는 주파수의 선형 처프 2개로 구성됩니다. 한 처프는 초기 주파수가 250Hz이고 100Hz로 감소합니다. 다른 처프는 초기 주파수가 400Hz이고 250Hz로 감소합니다.

t2 = t(nSamp/2+1:nSamp);

x21 = chirp(t2,400,nSamp/Fs,100);
x22 = chirp(t2,550,nSamp/Fs,250);
x2 = x21+x22;

백색 가우스 잡음을 신호에 추가합니다. 20dB의 신호 대 잡음비를 지정합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

SNR = 20;
rng('default')

sig = [x1;x2];
sig = sig + randn(size(sig))*std(sig)/db2mag(SNR);

신호의 스펙트로그램을 계산하고 플로팅합니다. 카이저 윈도우 길이 63, 형태 파라미터 , 인접 섹션 간 중첩 샘플 길이는 10개 더 적은 개수로, FFT 길이는 256으로 지정합니다.

nwin = 63;
wind = kaiser(nwin,17);
nlap = nwin-10;
nfft = 256;

spectrogram(sig,wind,nlap,nfft,Fs,'yaxis')

값이 SNR보다 작은 모든 요소가 0으로 설정되도록 스펙트로그램의 임계값을 지정합니다.

spectrogram(sig,wind,nlap,nfft,Fs,'MinThreshold',-SNR,'yaxis')

각 PSD 추정값을 그 값의 에너지 중심 위치에 다시 할당합니다.

spectrogram(sig,wind,nlap,nfft,Fs,'reassign','yaxis')

값이 SNR보다 작은 모든 요소가 0으로 설정되도록 재할당 스펙트로그램의 임계값을 지정합니다.

spectrogram(sig,wind,nlap,nfft,Fs,'reassign','MinThreshold',-SNR,'yaxis')

감소하는 처프 2개와 광대역 스플래터 사운드를 포함하는 오디오 신호를 불러옵니다. 단시간 푸리에 변환을 계산합니다. 파형을 400개 샘플 세그먼트로 나누고 중첩 샘플 길이를 300개로 지정합니다. 스펙트로그램을 플로팅합니다.

load splat

% To hear, type soundsc(y,Fs)

sg = 400;
ov = 300;

spectrogram(y,sg,ov,[],Fs,'yaxis')
colormap bone

spectrogram 함수를 사용하여 신호의 전력 스펙트럼 밀도(PSD)를 출력합니다.

[s,f,t,p] = spectrogram(y,sg,ov,[],Fs);

medfreq 함수를 사용하여 2개 처프(Chirp)를 추적합니다. 100Hz보다 높은 주파수와 광대역 사운드의 시작 전 시간으로 검색을 제한하여 더 강력한 저주파수 처프를 찾습니다.

f1 = f > 100;
t1 = t < 0.75;

m1 = medfreq(p(f1,t1),f(f1));

2500Hz보다 높은 주파수와 0.3초에서 0.65초까지의 시간으로 검색을 제한하여 약한 고주파수 처프를 찾습니다.

f2 = f > 2500;
t2 = t > 0.3 & t < 0.65;

m2 = medfreq(p(f2,t2),f(f2));

스펙트로그램에 결과를 겹쳐 놓습니다. 주파수 값을 1000으로 나누어 kHz로 표시합니다.

hold on
plot(t(t1),m1/1000,'linewidth',4)
plot(t(t2),m2/1000,'linewidth',4)
hold off

2초 동안 10kHz로 샘플링된 신호를 생성합니다. 신호의 순시 주파수를 시간에 대한 삼각 함수로 지정합니다.

fs = 10e3;
t = 0:1/fs:2;
x1 = vco(sawtooth(2*pi*t,0.5),[0.1 0.4]*fs,fs);

신호의 스펙트로그램을 계산하고 플로팅합니다. 길이가 256인 카이저 윈도우와 형태 파라미터 를 사용합니다. 섹션 간 중첩 샘플 길이를 220개로 지정하고, 512개 지점에 DFT를 적용합니다. y축에 주파수를 플로팅합니다. 디폴트 컬러맵과 뷰를 사용합니다.

spectrogram(x1,kaiser(256,5),220,512,fs,'yaxis')

뷰를 변경하여 스펙트로그램을 폭포 플롯(Waterfall Plot)으로 표시합니다. 컬러맵을 bone으로 설정합니다.

colormap bone
view(-45,65)

입력 인수

모두 축소

입력 신호로, 행 벡터나 열 벡터로 지정됩니다.

예: cos(pi/4*(0:159))+randn(1,160)은 백색 가우스 잡음을 포함하는 정현파를 지정합니다.

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

윈도우로, 정수로 지정되거나 행 벡터 또는 열 벡터로 지정됩니다. window를 사용하여 신호를 여러 세그먼트로 나눕니다.

  • window가 정수이면 spectrogramx를 길이가 window인 세그먼트로 나누고 각 세그먼트에 해당 길이의 해밍 윈도우를 적용합니다.

  • window가 벡터이면 spectrogramx를 벡터와 길이가 같은 세그먼트로 나누고 window를 사용하여 각 세그먼트에 윈도우를 적용합니다.

x의 길이를 noverlap개의 샘플을 중첩시키면서 정수 개수의 세그먼트로 정확히 나눌 수 없는 경우 x가 적절하게 잘립니다.

window를 빈 값으로 지정하면, spectrogram은 해밍 윈도우를 사용하여 xnoverlap개의 중첩 샘플을 가지는 8개의 세그먼트로 나눕니다.

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

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

데이터형: single | double

중첩(Overlap) 샘플의 개수로, 양의 정수로 지정됩니다.

  • window가 스칼라이면 noverlapwindow보다 작아야 합니다.

  • window가 벡터이면 noverlapwindow의 길이보다 작아야 합니다.

noverlap을 빈 값으로 지정하면 spectrogram은 세그먼트 간에 50% 중첩을 만드는 값을 사용합니다. 세그먼트 길이가 지정되지 않은 경우 이 함수는 noverlap을 ⌊Nx/4.5⌋로 설정합니다. 여기서 Nx는 입력 신호의 길이입니다.

데이터형: double | single

DFT를 적용할 지점의 개수로, 양의 정수 스칼라로 지정됩니다. nfft를 빈 값으로 지정하면 spectrogram은 파라미터를 max(256,2p)로 설정합니다. 여기서 p = ⌈log2 Nw입니다. 또한

  • window가 스칼라이면 Nw = window입니다.

  • window가 벡터이면 Nw = length(window)입니다.

데이터형: single | double

정규화 주파수로, 벡터로 지정됩니다. w는 적어도 2개의 요소를 가져야 합니다. 정규화 주파수는 rad/sample을 단위로 사용합니다.

예: pi./[2 4]

데이터형: double | single

주기적 주파수로, 벡터로 지정됩니다. f는 적어도 2개의 요소를 가져야 합니다. f의 단위는 샘플 레이트 fs로 지정됩니다.

데이터형: double | single

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

데이터형: double | single

PSD 추정값의 주파수 범위로, 'onesided', 'twosided' 또는 'centered'로 지정됩니다. 실수 값 신호의 경우, 디폴트 값은 'onesided'입니다. 복소수 값 신호의 경우, 디폴트 값은 'twosided'이며 'onesided'를 지정할 경우 오류가 발생합니다.

  • 'onesided' — 실수 입력 신호의 단측 스펙트로그램을 반환합니다. nfft가 짝수이면 psnfft/2 + 1개의 행을 가지고 구간 [0, π] rad/sample에 대해 계산됩니다. nfft가 홀수이면 ps가 (nfft + 1)/2개의 행을 가지고 구간은 [0, π) rad/sample이 됩니다. fs를 지정하면 구간은 각각 [0, fs/2] cycles/unit time 및 [0, fs/2) cycles/unit time이 됩니다.

  • 'twosided' — 실수 신호 또는 복소 신호의 양측 스펙트로그램을 반환합니다. psnfft개의 행을 가지고 구간 [0, 2π) rad/sample에 대해 계산됩니다. fs를 지정하면 구간은 [0, fs) cycles/unit time이 됩니다.

  • 'centered' — 실수 신호 또는 복소 신호에 대해 중심이 맞춰진 양측 스펙트로그램을 반환합니다. psnfft개의 행을 가집니다. nfft가 짝수이면 ps는 구간 (–π, π] rad/sample에 대해 계산됩니다. nfft가 홀수이면 ps(–π, π) rad/sample에 대해 계산됩니다. fs를 지정하면 구간은 각각 (–fs/2, fs/2] cycles/unit time 및 (–fs/2, fs/2) cycles/unit time이 됩니다.

데이터형: char

전력 스펙트럼 스케일링으로, 'psd' 또는 'power'로 지정됩니다.

  • spectrumtype을 생략하거나 'psd'를 지정하면 전력 스펙트럼 밀도가 반환됩니다.

  • 'power'를 지정하면 PSD의 각 추정값이 윈도우의 등가 잡음 대역폭으로 스케일링됩니다. 각 주파수의 전력 추정값이 결과로 반환됩니다. 'reassigned' 옵션이 설정된 경우 이 함수는 재할당하기 전에 각 주파수 Bin의 너비에 대해 PSD를 적분합니다.

데이터형: char

임계값으로, 데시벨 단위를 사용하여 표현된 실수형 스칼라로 지정됩니다. spectrogram은 10 log10(ps) ≤ thresh가 되는 ps 요소를 0으로 설정합니다.

주파수 표시 축으로, 'xaxis' 또는 'yaxis'로 지정됩니다.

  • 'xaxis'x축에 주파수를 표시하고 y축에 시간을 표시합니다.

  • 'yaxis'y축에 주파수를 표시하고 x축에 시간을 표시합니다.

이 인수는 spectrogram을 출력 인수와 함께 호출하는 경우 무시됩니다.

데이터형: char

출력 인수

모두 축소

단시간 푸리에 변환(Short-time Fourier Transform, STFT)으로, 행렬로 반환됩니다. 시간은 s의 열 방향으로 증가하고, 주파수는 0부터 시작하여 행 방향으로 증가합니다.

  • x가 길이가 Nx인 신호인 경우 s는 k개의 열을 가집니다. 여기서

    • k = ⌊(Nx – noverlap)/(window – noverlap)⌋(window가 스칼라인 경우)

    • k = ⌊(Nxnoverlap)/(length(window)noverlap)⌋(window가 벡터인 경우)

  • x가 실수이고 nfft가 짝수이면 s는 (nfft/2 + 1)개 행을 가집니다.

  • x가 실수이고 nfft가 홀수이면 s는 (nfft + 1)/2개 행을 가집니다.

  • x가 복소수이면 snfft개 행을 가집니다.

s'reassigned' 옵션의 영향을 받지 않습니다.

데이터형: double | single

정규화 주파수로, 벡터로 반환됩니다. w는 길이가 s의 행 개수와 같습니다.

데이터형: double | single

시점으로, 벡터로 반환됩니다. t의 시간 값은 각 세그먼트의 중간 지점에 대응됩니다.

데이터형: double | single

주기적 주파수로, 벡터로 반환됩니다. f는 길이가 s의 행 개수와 같습니다.

데이터형: double | single

전력 스펙트럼 밀도(PSD) 또는 전력 스펙트럼으로, 행렬로 반환됩니다.

  • x가 실수이면 ps는 각 세그먼트의 PSD 또는 전력 스펙트럼의 수정된 단측 주기도 추정값을 포함합니다.

  • x가 복소수이거나, 주파수로 구성된 벡터이면 ps는 각 세그먼트의 PSD 또는 전력 스펙트럼의 수정된 양측 주기도 추정값을 포함합니다.

데이터형: double | single

에너지 중심 주파수와 시간으로, 단시간 푸리에 변환과 같은 크기의 행렬로 반환됩니다. 샘플 레이트를 지정하지 않으면 fc의 요소는 정규화 주파수로 반환됩니다.

단시간 푸리에 변환에 0이 있는 경우 이를 데시벨로 변환하면 플로팅할 수 없는 음수 무한대가 생성됩니다. 이러한 문제를 방지하기 위해 spectrogram은 출력 인수 없이 호출되는 경우 eps를 단시간 푸리에 변환에 추가합니다.

참고 문헌

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

[2] Rabiner, Lawrence R., and Ronald W. Schafer. Digital Processing of Speech Signals. Englewood Cliffs, NJ: Prentice-Hall, 1978.

[3] Chassande-Motin, Éric, François Auger, and Patrick Flandrin. “Reassignment.” In Time-Frequency Analysis: Concepts and Methods. Edited by Franz Hlawatsch and François Auger. London: ISTE/John Wiley and Sons, 2008.

[4] 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.

R2006a 이전에 개발됨