Устаревшая схема Matlab против спектрограммы заменяет - PullRequest
2 голосов
/ 20 июля 2010

В последних версиях Matlabs функция specgram заменяется на spectrogram, а в документации говорится:

Примечание. Чтобы получить те же результаты дляудалена функция «Спектра», укажите окно «Hann» длиной 256.

К сожалению, мне кажется, что это не работает, если я использую spectrogram(signal,hann(256)), результат отличается от specgram(signal), хотя оба довольно похожи.Есть ли способ получить точно такой же вывод?

Ответы [ 3 ]

4 голосов
/ 27 июля 2010

Ну, я просто наткнулся на решение:

specgram(singal) = spectrogram(signal, hanning(256))

, поскольку hann и hanning не одно и то же в Matlab.

Спасибо всем за поддержку.

3 голосов
/ 20 июля 2010

Я считаю, что они вычисляются немного по-разному в каждой функции. Это лучшее, что я мог получить:

sig = rand(1280,1);
Fs = 2;
nfft = 256;
numoverlap = 128;
window = hanning(nfft);

%# specgram
subplot(121), specgram(sig,nfft,Fs,window,numoverlap)

%# spectrogram: make it look like specgram
[S,F,T,P] = spectrogram(sig,window,numoverlap,nfft,Fs);
subplot(122), imagesc(T, F, 20*log10(P))
axis xy, colormap(jet), ylabel('Frequency')

spectrogram

1 голос
/ 20 июля 2010

У меня нет Matlab, но hann(256,'periodic') может быть тем, что вы ищете.

...