Как я могу получить частотно-временной массив в Matlab.

У меня есть файл wav, и я хотел получить частотно-временной массив файла. для получения я попробовал STFT в Matlab.

[s f t]= spectrogram(x,window,overlap,N,FS);
figure(1)
imagesc(t,f,log10(abs(s)));

[X,Y]=meshgrid(t,f);
Z=log10(abs(s));
mesh(X,Y,Z);

Я получил изображение, которое хотел. Но я не знаю, что означают {s,ft,X,Y и Z}. Что мне нужно для получения частотно-временного массива.


person Yoon Heejun    schedule 25.04.2014    source источник


Ответы (1)


Из документации MATLAB:

[S,F,T] = spectrogram(...) возвращает вектор частот F и вектор времен T, для которых рассчитывается спектрограмма.

S, F и T — именно то, что вам нужно. Переменная T содержит моменты времени, когда wav-файл содержит частоты F с соответствующим STFT в переменной S. В логарифмическом масштабе (возможно, для лучшей видимости частотного содержимого) вы вычисляете Z=log10(abs(s));.

X и Y используются для создания графика сетки, но если вы хотите знать: они содержат T и F в матричной форме с T в каждой строке X и F в каждом столбце Y.

person Erik    schedule 25.04.2014