Замена устаревшей программы Matlab против спектрограммы

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

Заметка. Чтобы получить те же результаты для удаленной функции спектрограммы, укажите окно "Hann" длиной 256.

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

3 ответа

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

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

поскольку hann а также hanning не то же самое в Matlab.

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

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

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')

спектрограмма

В настоящее время у меня нет Matlab, чтобы попробовать, но hann(256,'periodic') может быть то, что вы ищете.

Другие вопросы по тегам