Спектрограмма Матлаб

У меня есть следующий код в матлабе:

[Sound Fs bits] = wavread('a.wav');

Теперь я должен использовать спектрограмму функции и построить ее (я должен дать спектрограмме функции следующие аргументы: звук и Fs, и предполагается, что функция возвращает вектор с частотным составом сигнала и вектор с частотами, в которых состав рассчитан).

Я сомневаюсь: как мне использовать функцию с этими спецификациями? Кто-нибудь может мне помочь?


person user2300158    schedule 05.05.2013    source источник
comment
Что вы пробовали и с какими проблемами столкнулись? Если вы не знаете, с чего начать, вам нужно более конкретно указать, в чем именно заключаются ваши трудности.   -  person wakjah    schedule 05.05.2013
comment
Итак, я сделал: [биты Sound Fs] = wavread('a.wav'); Теперь мне нужно сделать график с амплитудами и частотами, и я должен получить частоты из спектрограммы, я пытаюсь что-то вроде: [S, F, T] = спектрограмма (звук, Fs), он продолжает говорить: длина сегментов не может быть больше длины входного сигнала. И я не знаю другого способа сделать это. То, что я хотел бы сделать, было бы: plot(frequences_of_the_signal, amplitude_of_the_signal) Это объяснение прояснило? Извините за плохой английский, не мой родной язык   -  person user2300158    schedule 05.05.2013


Ответы (1)


Функция spectrogram ожидает аргумент векторного окна во втором аргументе. , если поставляется. Вам необходимо указать значения для всех аргументов до Fs включительно. Но эти аргументы необязательно могут быть пустыми, поэтому вы можете сделать:

[S, F, T] = spectrogram(Sound, [], [], [], Fs);
% Sample rate is the fifth argument        ^^

Хотя заметьте, что для правильного использования этой функции вы действительно должны понимать, что делают/значат остальные параметры... (Я не буду объяснять их здесь; вы могли бы написать целые книги на эту тему, и действительно многие был)

person wakjah    schedule 05.05.2013
comment
Хм, я понимаю, теперь, если бы я использовал функцию сюжета, это был бы сюжет (F, S) или сюжет (F, звук)? - person user2300158; 05.05.2013
comment
plot(F, S) построит вашу спектрограмму, plot(F, Sound) не имеет смысла, потому что F является вектором частот, а Sound находится во временной области... - person wakjah; 05.05.2013
comment
Да, я понял это. Я думаю, это все. Еще одна вещь: если я напишу: spectrogram(Sound, [], [], [], Fs) на Matlab, он покажет мне одну цифру, но если я сделаю: plot(F, S), он покажет мне что-то другое, это нормально? Если да, то какая разница? - person user2300158; 05.05.2013
comment
Обратите внимание на метки осей: spectrogram без выходных аргументов будет отображать его в дБ / Гц (для преобразования вы можете сделать 10 * log10(S)). - person wakjah; 05.05.2013