Документация Engee

pspectrum

Анализ сигналов в частотной и частотно-временной областях.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • p,f,t = pspectrum(x) — возвращает спектр мощности p сигнала x:

    • Если x — вектор, то он рассматривается как одиночный канал.

    • Если x — матрица, то спектр вычисляется независимо для каждого канала и сохраняется в отдельном столбце p.

    Также возвращает частоты f, соответствующие спектральным оценкам, содержащимся в p.

  • p,f,t = pspectrum(x,fs) — возвращает спектр мощности векторного или матричного сигнала, дискретизированного с частотой fs.

  • p,f,t = pspectrum(x,t) — возвращает спектр мощности векторного или матричного сигнала, дискретизированного в моменты времени, заданные в t.

  • p,f,t = pspectrum(___,type) — определяет тип спектрального анализа, выполняемого функцией. Установите для аргумента type значение "power", "spectrogram" или "persistence". Этот синтаксис может включать любую комбинацию входных аргументов из предыдущих вариантов.

  • p,f,t = pspectrum(___,Name,Value) — задает дополнительные параметры с использованием аргументов типа «имя-значение». Значения таких аргументов включают полосу разрешения по частоте и процент перекрытия между соседними сегментами.

  • p,f,t = pspectrum(___,"spectrogram") — также возвращает вектор моментов времени, соответствующих центрам оконных сегментов, используемых для вычисления оценок кратковременного спектра мощности.

  • p,f,pwr = pspectrum(___,"persistence") — также возвращает вектор значений мощности, соответствующих оценкам, содержащимся в спектре световой инерции.

  • pspectrum(___;out=:plot) — строит график спектральной оценки в текущем окне графиков. Для построения графика функция преобразует p в дБ с помощью .

Аргументы

Входные аргументы

# x — входной сигнал
вектор | матрица

Details

Входной сигнал, заданный как вектор или матрица.

Если x имеет неравномерную дискретизацию, то функция pspectrum интерполирует сигнал на равномерную сетку для вычисления спектральных оценок. Функция использует линейную интерполяцию и предполагает, что период дискретизации равен медиане разностей между соседними временными точками. Для поддержки сигнала с неравномерной дискретизацией медианный и средний временные интервалы должны удовлетворять условию

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# fs — частота дискретизации
(по умолчанию) | положительный числовой скаляр

Details

Частота дискретизации, заданная как положительный числовой скаляр.

# t — значения времени
вектор

Details

Значения времени, заданные как вектор, представляющий временной интервал между отсчетами.

# type — тип вычисляемого спектра
"power" (по умолчанию) | "spectrogram" | "persistence"

Details

Тип вычисляемого спектра, заданный как "power", "spectrogram" или "persistence":

  • "power" — вычисление спектра мощности входного сигнала. Используйте это значение для анализа частотного состава стационарного сигнала. Подробнее см. раздел Вычисление спектра.

  • "spectrogram" — вычисление спектрограммы входного сигнала. Используйте это значение для анализа изменения частотного состава сигнала во времени. Подробнее см. раздел Вычисление спектрограммы.

  • "persistence" — вычисление спектра мощности входного сигнала со световой инерцией. Используйте это значение для визуализации доли времени, в течение которой определенная частотная составляющая присутствует в сигнале. Подробнее см. раздел Вычисление спектра световой инерции.

Значения "spectrogram" и "persistence" не поддерживают мультканальный входной сигнал.

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде Name,Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.

Используйте запятые для разделения имени и значения, а Name заключите в кавычки.

# FrequencyLimits — границы частотного диапазона
[0 fs/2] (по умолчанию) | двухэлементный числовой вектор

Details

Границы частотного диапазона, заданные как пара, разделенная запятой, состоящая из "FrequencyLimits" и двухэлементного числового вектора:

  • Если входные данные содержат информацию о времени, то частотный диапазон выражается в Гц.

  • Если входные данные не содержат информацию о времени, то частотный диапазон выражается в нормализованных единицах рад/отсчет.

По умолчанию функция pspectrum вычисляет спектр по всему диапазону Найквиста:

  • Если заданный диапазон частот содержит область, выходящую за пределы диапазона Найквиста, pspectrum отсекает этот диапазон.

  • Если заданный диапазон частот полностью выходит за пределы диапазона Найквиста, pspectrum выдает ошибку.

Дополнительную информацию о диапазоне Найквиста см. в разделе Вычисление спектра.

Если x имеет неравномерную дискретизацию, то функция pspectrum линейно интерполирует сигнал на равномерную сетку и определяет эффективную частоту дискретизации, равную обратной медиане разностей между соседними временными точками. Выразите "FrequencyLimits" через эффективную частоту дискретизации.

# FrequencyResolution — полоса разрешения по частоте
вещественный числовой скаляр

Details

Полоса разрешения по частоте, заданная как пара, разделенная запятой, состоящая из "FrequencyResolution" и вещественного числового скаляра, выраженного в Гц, если входные данные содержат информацию о времени, или в нормализованных единицах рад/отсчет в противном случае. Этот аргумент не может быть задан одновременно с "TimeResolution". Значение этого аргумента по умолчанию зависит от размера входных данных. Подробнее см. в разделе Вычисление спектрограммы.

# Leakage — спектральная утечка
0.5 (по умолчанию) | вещественный числовой скаляр

Details

Спектральная утечка, заданная как пара, разделенная запятой, состоящая из "Leakage" и вещественного числового скаляра от 0 до 1. Аргумент "Leakage" управляет ослаблением боковых лепестков окна Кайзера относительно ширины главного лепестка, балансируя между улучшением разрешения и уменьшением утечки:

  • Большое значение утечки позволяет различить близко расположенные тоны, но маскирует соседние слабые тоны.

  • Небольшое значение утечки позволяет обнаружить слабые тоны вблизи более сильных тонов, но размывает близкие частоты.

# MinThreshold — нижняя граница для ненулевых значений
-Inf (по умолчанию) | вещественный скаляр

Details

Нижняя граница для ненулевых значений, заданная как пара, разделенная запятой, состоящая из "MinThreshold" и вещественного скаляра. Функция pspectrum реализует "MinThreshold" по-разному в зависимости от значения аргумента type:

  • "power" или "spectrogram" — функция pspectrum устанавливает нулевое значение для тех элементов p, для которых "MinThreshold". Задайте "MinThreshold" в дБ.

  • "persistence" — функция pspectrum устанавливает нулевое значение для тех элементов p, которые меньше значения "MinThreshold". Задайте "MinThreshold" в диапазоне от 0 до 100%.

# NumPowerBins — количество интервалов мощности для спектра световой инерции
256 (по умолчанию) | целое число

Details

Количество интервалов мощности для спектра световой инерции, заданное как пара, разделенная запятой, состоящая из "NumPowerBins" и целого числа от 20 до 1024.

# OverlapPercent — перекрытие между соседними сегментами
вещественный скаляр

Details

Перекрытие между соседними сегментами для спектрограммы или спектра световой инерции, заданное как пара, разделенная запятой, состоящая из "OverlapPercent" и вещественного скаляра в интервале [0, 100). Значение этого аргумента по умолчанию зависит от спектрального окна. Подробнее см. в разделе Вычисление спектрограммы.

# Reassign — параметр переназначения
false (по умолчанию) | true

Details

Параметр переназначения, заданный как пара, разделенная запятой, состоящая из "Reassign" и логического значения. Если для этого параметра установлено значение true, функция pspectrum повышает точность локализации спектральных оценок, выполняя переназначение по времени и частоте. Метод переназначения позволяет получать периодограммы и спектрограммы, которые легче читать и интерпретировать. Этот метод переназначает каждую спектральную оценку центру энергии ее бина, а не геометрическому центру бина. Этот метод обеспечивает точную локализацию ЛЧМ-сигналов и импульсов.

# TimeResolution — временное разрешение спектрограммы или спектра световой инерции
вещественный скаляр

Details

Временное разрешение спектрограммы или спектра световой инерции заданное как пара, разделенная запятой, состоящая из "TimeResolution" и вещественного скаляра, выраженного в секундах, если входные данные содержат информацию о времени, или целым числом отсчетов в противном случае. Этот аргумент управляет длительностью сегментов, используемых для вычисления кратковременных спектров мощности, формирующих оценки спектрограммы или спектра световой инерции. Аргумент "TimeResolution" нельзя указать одновременно с "FrequencyResolution". Значение этого аргумента по умолчанию зависит от размера входных данных и, если оно было задано, разрешения по частоте. Подробнее см. в разделе Вычисление спектрограммы.

# TwoSided — двусторонняя спектральная оценка
false | true

Details

Двусторонняя спектральная оценка, заданная как пара, разделенная запятой, состоящая из "TwoSided" и логического значения:

  • Если для этого параметра установлено значение true, функция вычисляет центрированные двусторонние спектральные оценки в диапазоне . Если входные данные содержат информацию о времени, оценки вычисляются в диапазоне , где — эффективная частота дискретизации.

  • Если для этого параметра установлено значение false, функция вычисляет односторонние спектральные оценки в диапазоне Найквиста . Если входные данные содержат информацию о времени, оценки вычисляются в диапазоне , где — эффективная частота дискретизации. Для сохранения полной мощности функция умножает мощность на 2 на всех частотах, кроме 0 и частоты Найквиста. Это значение применимо только для вещественных сигналов.

Если не указано иное, аргумент "TwoSided" по умолчанию принимает значение false для вещественных входных сигналов и значение true для комплексных входных сигналов.

# out — тип выходных данных
:data (по умолчанию) | :plot

Details

Тип выходных данных:

  • :data — функция возвращает данные;

  • :plot — функция возвращает график.

Выходные аргументы

# p — спектр
вектор | матрица

Details

Спектр, возвращаемый в виде вектора или матрицы. Тип и размер спектра зависят от значения аргумента type:

  • "power"p содержит оценку спектра мощности каждого канала сигнала x. В этом случае p имеет размер , где — длина f, а — количество каналов сигнала x. Функция pspectrum масштабирует спектр таким образом, что если частотный состав сигнала точно попадает в интервал, его амплитуда в этом интервале равна истинной средней мощности сигнала. Например, средняя мощность синусоиды равна половине квадрата амплитуды синусоиды.

  • "spectrogram"p содержит оценку кратковременного, локализованного во времени спектра мощности x. В этом случае p имеет размер , где — длина f, а — длина t.

  • "persistence"p содержит выраженные в процентах вероятности того, что сигнал содержит компоненты заданного уровня мощности в заданное время и на заданной частоте. В данном случае p имеет размер , где — длина pwr, а — длина f.

# f — частоты спектра
вектор

Details

Частоты спектра, возвращаемые в виде вектора. Если входной сигнал содержит информацию о времени, то f содержит частоты, выраженные в Гц. Если входной сигнал не содержит информации о времени, то частоты выражаются в нормализованных единицах рад/отсчет.

# t — временные значения спектрограммы
вектор | массив DateTime

Details

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

Если входные данные функции pspectrum — это числовой вектор, дискретизированный в установленные моменты времени, заданные числовым массивом или массивом DateTime, то t имеет тот же тип и формат, что и входные временные значения.

# pwr — значения мощности спектра световой инерции
вектор

Details

Значения мощности спектра световой инерции, возвращаемые в виде вектора.

Дополнительно

Вычисление спектра

Details

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

  • Если это возможно, функция вычисляет одну модифицированную периодограмму всего сигнала, используя окно Кайзера.

  • Если невозможно вычислить одну модифицированную периодограмму за разумное время, функция вычисляет периодограмму Уэлча: она делит сигнал на перекрывающиеся сегменты, разбивает каждый сегмент на окна, используя окно Кайзера, и усредняет периодограммы сегментов.

Спектральная оконная обработка

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

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

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

  • Разрешение — способность точно знать, как энергия сигнала распределена в частотном пространстве. Анализатор спектра с идеальным разрешением может различать два разных тона (чистые синусоиды), присутствующих в сигнале, независимо от их частоты. Количественно эта способность связана с шириной главного лепестка преобразования окна.

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

  • Спектр нормализован таким образом, что чистый тон в этой полосе пропускания, если он идеально центрирован, имеет правильную амплитуду.

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

Функция pspectrum использует окна Кайзера для оконного разделения. В окнах Кайзера доля энергии сигнала, захватываемая главным лепестком, зависит главным образом от настраиваемого формфактора . Функция pspectrum использует формфакторы в диапазоне от , что соответствует прямоугольному окну, до , где широкий главный лепесток захватывает практически всю спектральную энергию, представимую с двойной точностью. Промежуточное значение довольно близко аппроксимирует окно Ханна. Для управления используется аргумент типа «имя-значение» "Leakage". Если установить для аргумента "Leakage" значение , то и связаны соотношением . Подробнее см. в описании функции kaiser.

kaiser hann

kaiser hann 1

51-точечное окно Ханна и 51-точечное окно Кайзера с во временной области

51-точечное окно Ханна и 51-точечное окно Кайзера с в частотной области

Выбор параметров и алгоритма

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

где

  • Длина записи — это длительность выбранной области сигнала во временной области;

  • эквивалентная шумовая полоса спектрального окна.

    Используйте аргумент типа «имя-значение» "Leakage" для управления ENBW. Минимальное значение аргумента соответствует окну Кайзера с . Максимальное значение соответствует окну Кайзера с .

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

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

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

  • Если полоса разрешения соответствует , то функция pspectrum вычисляет одну модифицированную периодограмму для всего сигнала. Функция использует окно Кайзера с формфактором, определяемым аргументом типа «имя-значение» "Leakage". Подробнее см. в описании функции periodogram.

  • Если полоса разрешения равна , то функция pspectrum вычисляет периодограмму Уэлча для сигнала. Функция:

    1. Разделяет сигналы на перекрывающиеся сегменты.

    2. Разбивает каждый сегмент отдельно, используя окно Кайзера с заданным формфактором.

    3. Усредняет периодограммы всех сегментов.

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

    • Длина каждого сегмента (или, что эквивалентно, окна) вычисляется с помощью

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

    • Длина шага определяется путем корректировки первоначальной оценки

      таким образом, чтобы первое окно начиналось точно на первом отсчете первого сегмента, а последнее окно заканчивалось точно на последнем отсчете последнего сегмента.

Вычисление спектрограммы

Details

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

Нестационарный сигнал — это сигнал, частотный спектр которого изменяется со временем. Спектрограмма нестационарного сигнала представляет собой оценку временной эволюции его частотного спектра. Чтобы построить спектрограмму нестационарного сигнала, функция pspectrum выполняет следующие шаги:

  1. Разделяет сигнал на сегменты одинаковой длины. Сегменты должны быть достаточно короткими, чтобы частотный спектр сигнала не менялся заметно внутри сегмента. Сегменты могут перекрываться или не перекрываться.

  2. Выделяет каждый сегмент в окно и вычисляет его спектр для получения кратковременного преобразования Фурье.

  3. Использует спектры сегментов для построения спектрограммы:

    • Если функция вызвана с выходными аргументами, объединяет спектры в матрицу.

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

Функция может вычислить спектрограмму только для одноканальных сигналов.

Разделение сигнала на сегменты

Чтобы построить спектрограмму, сначала разделите сигнал на возможно перекрывающиеся сегменты. Функция pspectrum позволяет управлять длиной сегментов и степенью перекрытия между соседними сегментами с помощью аргументов типа «имя-значение» "TimeResolution" и "OverlapPercent". Если длина и перекрытие не заданы, функция выбирает длину на основе общей длительности сигнала и процента перекрытия, заданного формулой

где эквивалентная шумовая полоса спектрального окна.

Заданное разрешение по времени

  • Если сигнал не содержит информации о времени, укажите разрешение по времени (длину сегмента) в отсчетах. Разрешение по времени должно быть целым числом, большим или равным 1 и меньшим или равным длительности сигнала.

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

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

Разрешение по времени по умолчанию

Если разрешение по времени не указано, функция pspectrum использует длину всего сигнала для выбора длины сегментов. Функция устанавливает разрешение по времени как отсчетов, где символы обозначают функцию верхнего округления, — длина сигнала, а — делитель, зависящий от :

Длина сигнала ( ) Делитель ( ) Длина сегмента

2 отсчета – 63 отсчета

2

1 отсчет – 32 отсчета

64 отсчета – 255 отсчетов

8

8 отсчетов – 32 отсчета

256 отсчетов – 2047 отсчетов

8

32 отсчетов – 256 отсчетов

2048 отсчетов – 4095 отсчетов

16

128 отсчетов – 256 отсчетов

4096 отсчетов – 8191 отсчет

32

128 отсчетов – 256 отсчетов

8192 отсчета – 16383 отсчета

64

128 отсчетов – 256 отсчетов

16384 отсчета – отсчетов

128

128 отсчетов – отсчетов

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

Рассмотрим семи-отсчетный сигнал [s0 s1 s2 s3 s4 s5 s6]. Поскольку , функция делит сигнал на два сегмента длиной четыре, когда перекрытия нет. Количество сегментов изменяется по мере увеличения перекрытия.

Количество перекрывающихся отсчетов Результирующие сегменты

0

s0

s1

s2

s3

s4

s5

s6

0

1

s0

s1

s2

s3

s3

s4

s5

s6

2

s0

s1

s2

s3

s2

s3

s4

s5

s4

s5

s6

0

3

s0

s1

s2

s3

s1

s2

s3

s4

s2

s3

s4

s5

s3

s4

s5

s6

Функция pspectrum дополняет сигнал нулями, если последний сегмент выходит за пределы конечной точки сигнала. Функция возвращает t — вектор моментов времени, соответствующих центрам сегментов.

Окно сегментов и вычисление спектров

После того как функция pspectrum разделит сигнал на перекрывающиеся сегменты, функция накладывает на каждый сегмент окно Кайзера. Формфактор окна и, следовательно, утечку можно настроить с помощью аргумента типа «имя-значение» "Leakage". Затем функция вычисляет спектр каждого сегмента и объединяет спектры, формируя матрицу спектрограммы. Для вычисления спектров сегментов pspectrum следует процедуре, описанной в разделе Вычисление спектра, за исключением того, что нижняя граница полосы разрешения равна

Отображение мощности спектра

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

Вычисление спектра световой инерции

Details

Спектр световой инерции — это частотно-временное представление, показывающее процент времени, в течение которого заданная частота присутствует в сигнале. Спектр световой инерции представляет собой гистограмму в пространстве мощности и частоты. Чем дольше определенная частота присутствует в сигнале по мере его развития, тем выше ее процент времени и, следовательно, тем ярче или «горячее» ее цвет на дисплее. Используйте спектр световой инерции для выявления сигналов, скрытых в других сигналах.

Чтобы вычислить спектр устойчивости, функция pspectrum выполняет следующие шаги:

  1. Вычисляет спектрограмму, используя заданные значения утечки, разрешения по времени и перекрытия. Подробнее см. в разделе Вычисление спектрограммы.

  2. Разбивает значения мощности и частоты на двумерные интервалы. (Используйте аргумент типа «имя-значение» "NumPowerBins", чтобы указать количество интервалов мощности.)

  3. Для каждого значения времени вычисляет двумерную гистограмму логарифма спектра мощности. Для каждого интервала мощности-частоты, где в этот момент присутствует энергия сигнала, увеличивает соответствующий элемент матрицы на 1. Суммирует гистограммы для всех значений времени.

  4. Строит гистограмму накопленных значений в зависимости от мощности и частоты, используя цвет, пропорциональный логарифму значений гистограммы, выраженных в нормализованных процентах. Для представления нулевых значений использует половину наименьшей возможной амплитуды.

Литература

  1. Harris, Fredric J. «On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform.» Proceedings of the IEEE®. Vol. 66, January 1978, pp. 51–83.

  2. Welch, Peter D. «The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms.» IEEE Transactions on Audio and Electroacoustics. Vol. 15, June 1967, pp. 70–73.