Что такое спектрограмма и как установить ее параметры?

Я пытаюсь построить спектрограмму моего сигнала временной области:

N=5000;
phi = (rand(1,N)-0.5)*pi;
a = tan((0.5.*phi));
i = 2.*a./(1-a.^2);
plot(i);
spectrogram(i,100,1,100,1e3);

проблема я не понимаю параметры и какие значения должны быть даны. Эти значения, которые я использую, я сослался на онлайн-документацию MATLAB spectrogram. Я новичок в MATLAB, и я просто не понял. Любая помощь будет очень признательна!

1 ответов


прежде чем мы фактически перейдем к тому, что делает эта команда MATLAB, вы, вероятно, хотите знать, что такое спектрограмма. Таким образом, вы получите больше смысла в том, как работает каждый параметр.

спектрограмма-это визуальное представление Кратковременное Преобразование Фурье. Подумайте об этом как о принятии кусков входного сигнала и применении локального преобразования Фурье на каждом куске. Каждый фрагмент имеет заданную ширину, и вы применяете преобразование Фурье к этому фрагменту. Вы должны обратите внимание, что каждый фрагмент имеет связанное частотное распределение. Для каждого куска, который центрируется в определенный момент времени в вашем сигнале времени, вы получаете кучу частотных компонентов. Собрание всех этих частотных компонентов на каждом куске и построенное все вместе что существенно спектрограмма.

спектрограмма представляет собой 2D визуальную тепловую карту, где горизонтальная ось представляет время сигнала, а вертикальная ось представляет ось частоты. Что? визуализируется изображение, где более темные цвета означают, что для определенной точки времени и определенной частоты, чем ниже по величине частотная составляющая, тем темнее цвет. Аналогично, чем выше по величине частотная составляющая, тем светлее цвет.

вот один прекрасный пример спектрограммы:

источник: Википедия

поэтому, для каждого момента времени, мы см. раздел распределение частотных компонентов. Подумайте о каждом столбце как о частотном разложении куска, центрированного в этот момент времени. Для каждой колонки мы видим различный спектр цветов. Чем темнее цвет, тем меньше компонент величины на этой частоте и наоборот.


так!... теперь вы вооружены этим, давайте рассмотрим, как работает MATLAB с точки зрения функции и ее параметров. То, как вы зовете spectrogram соответствует этому версия функции:

spectrogram(x,window,noverlap,nfft,fs) 

давайте рассмотрим каждый параметр один за другим, чтобы вы могли лучше понять, что каждый из них делает:

  • x - это входной сигнал временной области, который вы хотите найти спектрограмму. Все не может быть намного проще. В вашем случае сигнал, который вы хотите найти спектрограмму, определяется следующим кодом:

    N=5000;
    phi = (rand(1,N)-0.5)*pi;
    a = tan((0.5.*phi));
    i = 2.*a./(1-a.^2);
    

    здесь i - это сигнал, который вы хотите найти спектрограмма.

  • window - если вы помните, мы разлагаем изображение на куски, и каждый кусок имеет заданную ширину. window определяет ширину каждого куска в терминах образцы. Поскольку это сигнал дискретного времени, вы знаете, что этот сигнал был выбран с определенной частотой дискретизации и периодом дискретизации. Вы можете определить, насколько велико окно с точки зрения образцов:

    window_samples = window_time/Ts

    Ts - это время выборки сигнала. Установка размера окна на самом деле очень эмпирическая и требует много экспериментов. В принципе, чем больше размер окна, тем лучшее разрешение частоты вы получаете, поскольку вы захватываете больше частот, но локализация времени плохая. Аналогично, чем меньше размер окна, тем лучшая локализация у вас есть во времени, но вы не получаете такой большой частотной декомпозиции. У меня нет никаких предложений здесь о том, какой самый оптимальный размер... вот почему вейвлеты предпочтительны, когда дело доходит до частотно-временной декомпозиции. Для каждого "куска" куски разлагаются на меньшие куски динамической ширины, поэтому вы получаете смесь хорошей временной и частотной локализации.

  • noverlap - другой способ обеспечить хорошую локализацию частоты заключается в том, что куски перекрытие. Правильная спектрограмма гарантирует, что каждый кусок имеет определенное количество перекрывающихся образцов за каждый кусок и noverlap определяет, сколько образцов перекрываются в каждом окне. По умолчанию используется 50% ширины каждого фрагмента.

  • nfft - вы по существу принимаете БПФ каждого куска. nfft сообщает вам, сколько точек FFT требуется вычислить на кусок. Количество точек по умолчанию является наибольшим из 256 или floor(log2(N)) здесь N - длина сигнала. nfft также дает измерение того, насколько мелкозернистая частота разрешение будет. Большее число точек БПФ даст более высокое частотное разрешение и, таким образом, покажет мелкозернистые детали вдоль частотной оси спектрограммы, если визуализировать.

  • fs - частота дискретизации вашего сигнала. Значение по умолчанию-1 Гц, но вы можете переопределить его на любую частоту дискретизации вашего сигнала.


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


удачи!