Пример спектрограммы в Matlab

Есть ли код Matlab, который показывает ряд чисел, представляющих форму волны в виде спектрограммы?

Временной интервал, который представляет каждый образец, одинаков, в идеале его также можно было бы использовать для шкалы оси.

http://www.davegrossman.net/gould/media/spectrum-devocalized.jpg

Например:

spec({1 2 3 2 1 2 3 2}, 0.1 seconds)

or

spec(my_data.txt, 10 Hz)

так далее...


person alan2here    schedule 15.03.2012    source источник
comment
Да, здесь есть пример: mathworks.co.uk/help /toolbox/signal/ref/spectrogram.html.   -  person Oliver Charlesworth    schedule 15.03.2012


Ответы (2)


Если у вас есть Signal Processing Toolbox, вы можете использовать spectrogram()< /а> функция. например.:

T = 0:0.001:2;
X = chirp(T,100,1,200,'q');
spectrogram(X,128,120,128,1E3); 

(Пример взят с этой страницы документации.)

Числовые параметры: длина окна, длина перекрытия, длина БПФ и частота дискретизации соответственно.

person Oliver Charlesworth    schedule 15.03.2012
comment
А для внешних данных это X = cell2mat({1 2 3 etc...}) или вставить в окно Workspace. - person alan2here; 16.03.2012
comment
@alan2here: Что такое внешние данные? cell2mat кажется чрезмерным; просто используйте квадратные скобки, если вы хотите обычный массив. - person Oliver Charlesworth; 16.03.2012
comment
Внешние данные, вы знаете, данные, которые поступают откуда-то еще. Например, список чисел, которые я скачал из Интернета, а не генерировал в Matlab. Также работает cell2mat, вместо этого используя квадратные скобки, X должен быть вектором (либо строкой, либо столбцом). потому что X оказывается неправильным типом для спектрограммы. - person alan2here; 16.03.2012
comment
@alan2here: X = [1 2 3 4 5 6]; spectrogram(X,...); должно работать нормально. Как правило, вам следует использовать массивы ячеек (т.е. массивы объявлены с использованием {}), если они вам действительно не нужны, потому что они портят всякие вещи. - person Oliver Charlesworth; 16.03.2012

если вы посмотрите на панель инструментов tftb, tfrspwv — это очень сложный и точный код спектрограммы, и в онлайн-коде tfrspwv.m есть пример запускающего скрипта для создания спектрограммы в Matlab.

person DeltaEnfieldWaid    schedule 13.07.2015