MATLAB 'спектрограмма' параметры - PullRequest
17 голосов
/ 04 мая 2011

Я новичок в MATLAB, и я должен выполнить спектральный анализ сигнала ЭЭГ, рисуя графики спектральной плотности мощности и спектрограммы. Мой сигнал имеет длину 10 секунд и частоту дискретизации 160 Hz, всего 1600 samples, и у меня есть несколько вопросов о том, как найти параметры функций в MATLAB, в том числе:

pwelch (x, window, noverlap, nfft, fs);

spectrogram (x, window, noverlap, F, fs);

Мой вопрос: где найти значения для параметров window и noverlap Я не знаю, для чего они.

Ответы [ 4 ]

80 голосов
/ 04 мая 2011

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

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

enter image description here

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

enter image description here

Эта спектральная утечка происходит через боковые лепестки. Чтобы понять больше об этом, вы также должны прочитать о функции sinc и ее преобразовании Фурье, функции прямоугольника . Конечная последовательность отсчетов может рассматриваться как бесконечная последовательность, умноженная на прямоугольную функцию. Происходящая утечка связана с боковыми лепестками функции sinc (sinc и прямоугольник принадлежат к самодвойственному пространству и являются F.Ts друг друга). Это объясняется более подробно в статье о спектральных утечках, на которую я ссылался выше.

Оконные функции

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

Некоторые из распространенных окон - это Хеннинг, Хэмминг, Блэкман, Блэкман-Харрис, Кайзер-Бессель и т. Д. Более подробную информацию о них вы можете получить по вики-ссылке, а соответствующие команды MATLAB: hann, hamming, blackman, blackmanharris и kaiser. Вот небольшой пример различных окон:

enter image description here

Вы можете удивиться, почему существует так много разных оконных функций. Причина в том, что каждый из них имеет очень разные спектральные свойства и имеет разную ширину основного лепестка и амплитуды боковых лепестков. Бесплатного обеда не бывает: если вам нужно хорошее разрешение по частоте (основной лепесток тонкий), боковые лепестки становятся больше и наоборот. Вы не можете иметь оба. Часто выбор оконной функции зависит от конкретных потребностей и всегда сводится к компромиссу. Это - очень хорошая статья, в которой говорится об использовании оконных функций, и вы обязательно должны ее прочитать.

Теперь, когда вы используете оконную функцию, у вас меньше информации на конусных концах. Таким образом, один из способов исправить это - использовать раздвижные окна с перекрытием, как показано ниже. Идея состоит в том, что при объединении они максимально приближают исходную последовательность (т. Е. Нижний ряд должен быть как можно ближе к плоскому значению 1). Типичные значения варьируются от 33% до 50%, в зависимости от применения.

enter image description here

Использование спектрограммы MATLAB

Синтаксис spectrogram(x,window,overlap,NFFT,fs)

где

  • x - это весь ваш вектор данных
  • window - ваша оконная функция. Если вы введете только число, скажем, W (должно быть целым числом), то MATLAB разбивает ваши данные на куски по W выборок каждый и формирует из них спектрограмму. Это эквивалентно использованию прямоугольного окна длиной W сэмплов. Если вы хотите использовать другое окно, укажите hann(W) или другое выбранное вами окно.
  • overlap - количество сэмплов, которые вам нужно перекрывать. Таким образом, если вам нужно перекрытие 50%, это значение должно быть W/2. Используйте floor(W/2) или ceil(W/2), если W может принимать нечетные значения. Это просто целое число.
  • NFFT - длина БПФ
  • fs - частота дискретизации вашего вектора данных. Вы можете оставить это поле пустым, и MATLAB отобразит фигуру с точки зрения нормализованных частот и оси времени как просто индекс фрагмента данных. Если вы введете его, MATLAB соответственно изменит масштаб оси.

Вы также можете получить дополнительные выходные данные, такие как вектор времени и вектор частоты, а также рассчитанный спектр мощности, для использования в других вычислениях или если вам нужно по-другому оформить свой график. Обратитесь к документации для получения дополнительной информации.

Вот пример с 1 секундой линейного ЛЧМ-сигнала от 20 Гц до 400 Гц с частотой дискретизации 1000 Гц. Используются две оконные функции, Hanning и Blackman-Harris, с перекрытиями и без них. Длина окна составляла 50 образцов и перекрывалась на 50% при использовании. Графики масштабируются до одинакового диапазона 80 дБ на каждом графике.

enter image description here

Вы можете заметить разницу в цифрах (сверху вниз) из-за перекрытия. Вы получите более точную оценку, если используете перекрытие. Вы также можете наблюдать компромисс между шириной основного лепестка и амплитудой бокового лепестка, который я упоминал ранее. Хеннинг имеет более тонкий основной лепесток (выпуклая линия по диагонали перекоса), что приводит к лучшему разрешению по частоте, но имеет негерметичные боковые лепестки, видимые яркими цветами снаружи. Blackwell-Harris, с другой стороны, имеет более толстую главную долю (более толстую диагональную линию), но меньшую спектральную утечку, о чем свидетельствует равномерно низкая (синяя) внешняя область.

8 голосов
/ 04 мая 2011

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

Скажите, что упомянутый выше сигнал является нестационарным (это сигналы ЭЭГ). Также предположим, что он неподвижен только около 10 мс или около того. Чтобы надежно измерить статистику, такую ​​как PSD or energy, вам нужно измерять эту статистику по 10 мс за раз. Функция работы с окнами - это то, на что вы умножаете сигнал, чтобы изолировать те 10 мс сигнала, на которых вы будете вычислять PSD и т. Д. Итак, теперь вам нужно пересечь длину сигнала. Вам нужно сдвигающееся окно (чтобы окно весь сигнал 10 мс за раз). Перекрытие окон дает вам более достоверную оценку статистики.

Вы можете представить это так:
1. Возьмите первые 10 мс сигнала.
2. Окно это с функцией управления окнами.
3. Вычислять статистику только для этой порции 10 мс.
4. Переместите окно на 5 мс (предположим, что длина перекрытия).
5. Окно сигнала снова.
6. Снова вычислите статистику.
7. Перемещение по всей длине сигнала.

Существует много различных типов оконных функций - Blackman, Hanning, Hamming, Rectangular. Это и длина окна и перекрытия действительно зависят от приложения, которое у вас есть, и частотных характеристик самого сигнала.

В качестве примера, при обработке речи (когда сигналы нестационарны и многократное использование окон), наиболее популярными вариантами оконных функций являются Хэмминг / Хеннинг длины 10ms (320 samples at 16 kHz sampling) with an overlap of 80 samples (25% of window length). Это работает достаточно хорошо. Вы можете использовать это в качестве отправной точки для своего приложения, а затем немного поработать над его настройкой с различными значениями.

Вы также можете взглянуть на следующие функции в MATLAB:
1. hamming
2. hanning

Надеюсь, вы знаете, что вы можете вызвать тонну справки в MATLAB, используя команду help в командной строке. MATLAB является одним из лучших задокументированных программных продуктов. Использование команды help для pwelch также позволяет получить определения размера окна и перекрытия. Это должно помочь вам тоже.

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

НТН,
Шриры.

0 голосов
/ 25 января 2014

Для последнего параметра fs, который является частотой необработанного сигнала, в вашем случае X, когда вы извлекаете X из аудиоданных с помощью функции

[X,fs]=audioread('song.mp3')

Вы можете получить fs из него.

0 голосов
/ 29 декабря 2013

Исследуйте, как следующие параметры изменяют производительность функции Sinc :

  1. Длина коэффициентов
  2. Следующие оконные функции:
    • Блэкман Харрис
    • Ханнинг
    • Бартлетт
...