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

pkurtosis

Спектральный эксцесс сигнала или спектрограммы.

Библиотека

EngeeDSP

Синтаксис

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

  • sk,fout,thresh = pkurtosis(x,out=:data) — возвращает спектральный эксцесс сигнала x в виде вектора sk, а также вектор частот fout. Для вычисления временных параметров функция pkurtosis использует нормированную частоту: равномерно распределенные значения частоты в диапазоне от 0 до π рад/отсчет. Спектрограмма сигнала вычисляется с помощью pspectrum с размером окна по умолчанию и перекрытием окон 80%.

  • sk,fout,thresh = pkurtosis(x,sampx,out=:data) — возвращает спектральный эксцесс сигнала x, для которого частота или период дискретизации заданы аргументом sampx.

  • sk,fout,thresh = pkurtosis(___,window,out=:data) — возвращает спектральный эксцесс, используя временное разрешение window для вычисления спектрограммы с помощью функции pspectrum. Этот аргумент можно использовать с любыми входными аргументами из предыдущих вариантов синтаксиса.

  • sk,fout,thresh = pkurtosis(s,sampx,f,window,out=:data) — возвращает спектральный эксцесс по заданной спектрограмме или спектрограмме мощности s. Аргумент sampx задает частоту или период дискретизации исходного сигнала, f — частоты спектрограммы, а window — ее временное разрешение.

    Используйте этот синтаксис для работы со спектрограммой, если нужно настроить аргументы функции pspectrum, а не использовать настройки функции pkurtosis по умолчанию. Чтобы использовать нормированную частоту по умолчанию, задайте sampx пустым. В этом варианте синтаксиса аргумент window обязателен.

  • sk,fout,thresh = pkurtosis(___,"ConfidenceLevel",p,out=:data) — также возвращает пороговое значение спектрального эксцесса thresh для уровня доверия p. Порог определяет границы области, в которой значения спектрального эксцесса соответствуют стационарному гауссовому сигналу при выбранном уровне доверия. Уровень доверия позволяет настроить чувствительность пороговых значений спектрального эксцесса к отклонениям от гауссова распределения или к обнаружению нестационарных составляющих сигнала.

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

  • pkurtosis(___) — строит график спектрального эксцесса с указанием уровня доверия и пороговых значений. Этот синтаксис можно использовать с любыми входными аргументами из предыдущих вариантов.

Аргументы

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

# x — сигнал во временной области
вектор

Details

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

# sampx — частота дискретизации или период дискретизации сигнала
нормированная частота (по умолчанию) | скаляр | вектор | массив

Details

Частота дискретизации или период дискретизации сигнала, заданные одним из следующих значений:

  • Положительный скаляр — частота, измеряемая в Гц;

  • Вектор или массив — моменты времени, соответствующие каждому элементу x.

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

МедианныйвременнойинтервалСреднийвременнойинтервал

Если sampx задан пустым, функция pkurtosis использует нормированную частоту, то есть вектор частот имеет равномерно распределенные значения в диапазоне .

# window — временное разрешение окна
скаляр

Details

Временное разрешение окна, заданное как положительный скаляр в отсчетах. Используется при внутреннем вычислении спектрограммы с помощью функции pspectrum. Аргумент window обязателен при подаче на вход уже существующей спектрограммы и необязателен в остальных вариантах синтаксиса. Оптимальный размер окна можно определить с помощью функции kurtogram. По умолчанию pspectrum использует перекрытие окон 80%.

# s — спектрограмма или спектрограмма мощности сигнала
матрица | вектор

Details

Спектрограмма или спектр мощности сигнала, заданные как матрица для спектрограммы или вектор-столбец для спектра.

  • Если s содержит комплексные значения, функция pkurtosis интерпретирует его как кратковременное преобразование Фурье (КВПФ) исходного сигнала (спектрограммы).

  • Если s содержит вещественные значения, функция pkurtosis интерпретирует его как квадрат модуля КВПФ исходного сигнала (спектрограммы мощности). Каждый элемент s должен быть неотрицательным.

Если аргумент s задан, функция pkurtosis использует его вместо вычисления собственной спектрограммы или спектрограммы мощности. В качестве примера см. Построение графика спектрального эксцесса по заданной спектрограмме.

Типы данных

Float32, Float64, Int64

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

Да

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

Details

Частоты спектрограммы или спектрограммы мощности s, заданные как вектор в Гц. Аргумент используется, когда s явно передается функции pkurtosis. Длина вектора f должна совпадать с количеством строк аргумента s.

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

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

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

# ConfidenceLevel — уровень доверия
0.95 (по умолчанию) | скаляр

Details

Уровень доверия, заданный как скаляр p в диапазоне от 0 до 1. Используется для определения того, можно ли считать сигнал гауссовым и стационарным. Значение p влияет на границы области, определяемые пороговым значением thresh. Внутри этой области значение спектрального эксцесса указывает на гауссовость и стационарность сигнала. Таким образом, уровень доверия позволяет настроить чувствительность обнаружения. Значения эксцесса за пределами области с вероятностью указывают на возможное негауссовое или нестационарное поведение сигнала. В качестве примера см. Построение графика спектрального эксцесса нестационарного сигнала при разных уровнях доверия.

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

# sk — спектральный эксцесс
вектор

Details

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

# fout — частоты спектрального эксцесса
вектор

Details

Частоты, соответствующие значениям sk, возвращаемые в виде вектора типа Float32 или Float64 в Гц.

# thresh — ширина полосы спектрального эксцесса для стационарного гауссова поведения
скаляр

Details

Ширина полосы спектрального эксцесса для стационарного гауссова поведения, возвращаемая в виде скаляра. Это значение определяет толщину полосы, центрированной относительно линии sk = 0, при заданном уровне доверия ConfidenceLevel. Выход за пределы полосы, ограниченной порогом thresh, указывает на возможное нестационарное или негауссовское поведение. Аргумент ConfidenceLevel непосредственно влияет на толщину полосы и чувствительность результатов. В качестве примера см. Построение графика спектрального эксцесса нестационарного сигнала при разных уровнях доверия.

Примеры

Построение графика спектрального эксцесса нестационарного сигнала при разных уровнях доверия

Details

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

Создадим чирп-сигнал, добавим белый гауссов шум и построим график.

import EngeeDSP.Functions: chirp

fs = 1000
t = collect(0:1/fs:10)
f1 = 300
f2 = 400

xc = chirp(t, f1, 10, f2)
x = xc .+ randn(length(t))

plot(t, x, title = "Chirp Signal with White Gaussian Noise")

pkurtosis 1

Построим график спектрального эксцесса сигнала.

import EngeeDSP.Functions: pkurtosis

pkurtosis(x, fs)
plot!(title = "Spectral Kurtosis of Chirp Signal with White Gaussian Noise",
      ylim = (-1, 9), legend = (0.64, 0.93))

pkurtosis 2

На графике видно выраженное отклонение в диапазоне от 300 до 400 Гц, соответствующее нестационарной составляющей чирп-сигнала. Область между горизонтальными штриховыми линиями соответствует зоне вероятного стационарного и гауссова поведения, определяемой уровнем доверия 0.95. Значения эксцесса, попадающие в эту зону, с высокой вероятностью характеризуют стационарный гауссов процесс. Значения, выходящие за пределы этой зоны, классифицируются как нестационарные или негауссовские. Несколько небольших отклонений ниже 300 Гц, незначительно превышающих пороговое значение, представляют собой ложные срабатывания: шум приводит к превышению порога для стационарной гауссовой составляющей.

Исследуем влияние уровня доверия, изменив его значение с принятого по умолчанию 0.95 на 0.85.

pkurtosis(x, fs, "ConfidenceLevel", 0.85)
plot!(title = "Spectral Kurtosis of Chirp Signal with Noise at Confidence Level of 0.85",
      ylim = (-1, 9), legend = (0.64, 0.93))

pkurtosis 3

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

Сравним ширину зоны для обоих уровней доверия, используя вариант вызова pkurtosis, возвращающий соответствующее значение.

sk1, _, thresh95 = pkurtosis(x, out = :data)
sk2, _, thresh85 = pkurtosis(x, ConfidenceLevel = 0.85, out = :data)
thresh = [thresh95 thresh85]
1×2 Matrix{Float64}:
 0.357839  0.262821

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

pkurtosis(x, ConfidenceLevel = 0.85)
plot!(title = "Spectral Kurtosis using Normalized Frequency",
      ylim = (-1, Inf), legend = (0.64, 0.93))

pkurtosis 4

Шкала частот в Гц заменена шкалой нормированной частоты от 0 до π рад/отсчет.

Построение графика спектрального эксцесса по заданной спектрограмме

Details

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

Создадим чирп-сигнал, содержащий белый гауссов шум.

import EngeeDSP.Functions: chirp

fs = 1000
t = collect(0:1/fs:10)
f1 = 300
f2 = 400

x = chirp(t, f1, 10, f2) .+ randn(length(t))

Вычислим спектрограмму с помощью функции spectrogram, задав размер окна, перекрытие и число точек БПФ. Затем используем эту спектрограмму в pkurtosis.

import EngeeDSP.Functions: spectrogram, pkurtosis

window = 256
overlap = round(Int, window * 0.8)
nfft = 2 * window
s, f, t, p = spectrogram(x, window, overlap, nfft, fs = fs, out = :data)

pkurtosis(s, fs, f, window)
plot!(ylim = (-1, Inf), legend = (0.13, 0.93))

pkurtosis 5

Амплитуда всплеска здесь выше — и, следовательно, он лучше различим, — чем при использовании настроек по умолчанию в предыдущем примере.

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

Спектральный эксцесс

Details

Спектральный эксцесс — статистическая характеристика, позволяющая обнаруживать и локализовать нестационарные или негауссовские процессы в частотной области, характеризующаяся:

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

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

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

Спектральный эксцесс сигнала вычисляется на основе кратковременного преобразования Фурье (КВПФ) :

где — оконная функция. Спектральный эксцесс вычисляется по формуле

где — оператор усреднения по времени.

Если сигнал содержит только стационарный гауссов шум, то на каждой частоте величина имеет асимптотически нормальное распределение с нулевым средним и дисперсией , где — количество элементов вдоль временной оси в . Следовательно, статистический порог при уровне доверия определяется как

где — квантильная функция стандартного нормального распределения.

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

Литература

  1. Antoni, J. «The Spectral Kurtosis: A Useful Tool for Characterising Non-Stationary Signals.» Mechanical Systems and Signal Processing. Vol. 20, Issue 2, 2006, pp. 282–307.

  2. Antoni, J., and R. B. Randall. «The Spectral Kurtosis: Application to the Vibratory Surveillance and Diagnostics of Rotating Machines.» Mechanical Systems and Signal Processing. Vol. 20, Issue 2, 2006, pp. 308–331.