Замена устаревшей программы 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')
может быть то, что вы ищете.