kurtogram
Визуализация спектрального эксцесса.
| Библиотека |
|
Синтаксис
Вызов функции
-
kgram,f,w,fc,wc,bw = kurtogram(x,out=:data)— возвращает быструю куртограмму сигналаxв виде матрицыkgramи набор параметров для последующего проектирования полосового фильтра и анализа спектрального эксцесса:Для вычисления временных значений функция
kurtogramиспользует нормированную частоту: равномерно распределенные значения частоты в диапазоне[0, π].
-
kgram,f,w,fc,wc,bw = kurtogram(___,level,out=:data)— возвращает быструю куртограмму с заданным уровнемlevel. Этот аргумент определяет уровень разрешения окна и количество вычисляемых значений спектрального эксцесса. Его можно использовать с любыми входными аргументами из предыдущих вариантов синтаксиса.
-
kurtogram(___,out=:plot)— строит куртограмму с указанием основных параметров оптимизации. Этот синтаксис можно использовать с любыми входными аргументами из предыдущих вариантов.
Аргументы
Входные аргументы
#
x —
сигнал во временной области
вектор
Details
Сигнал во временной области, заданный как вектор. Функция kurtogram вычисляет быструю куртограмму этого сигнала.
#
sampx —
частота дискретизации или период дискретизации сигнала
нормированная частота (по умолчанию) | скаляр | вектор | массив
Details
Частота дискретизации или период дискретизации сигнала, заданные одним из следующих значений:
-
Положительный скаляр — частота, измеряемая в Гц;
-
Вектор или массив — моменты времени, соответствующие каждому элементу
x.
Если sampx представляет собой вектор, отсчеты могут быть неравномерными, однако функция pspectrum накладывает следующее ограничение на отношение медианного и среднего временных интервалов:
Если sampx задан пустым, функция kurtogram использует нормированную частоту, то есть вектор частот имеет равномерно распределенные значения в диапазоне .
#
level —
максимальный уровень куртограммы
скаляр
Details
Максимальный уровень куртограммы, заданный как положительное целое число. Этот аргумент определяет количество вычисляемых значений спектрального эксцесса и размеры окон, используемых функцией kurtogram, а следовательно, частотное разрешение.
При увеличении частотного разрешения временное разрешение уменьшается. Если любое из этих разрешений окажется слишком низким, оценка спектрального эксцесса будет неточной. При выборе level необходимо учитывать влияние на оба вида разрешения.
Входные аргументы «имя-значение»
#
out —
тип выходных данных
:plot (по умолчанию) | :data | :all
Details
Тип выходных данных:
-
:plot— функция возвращает график; -
:data— функция возвращает данные; -
:all— функция возвращает данные и график.
Выходные аргументы
#
kgram —
быстрая куртограмма
матрица
Details
Быстрая куртограмма, возвращаемая в виде матрицы, размеры которой определяются аргументом level. Матрица содержит 2 * level строк и 3 * 2level столбцов. Каждая строка содержит результаты расчета спектрального эксцесса для всех элементов вектора частот f и для размера окна, определяемого положением строки относительно следующей последовательности:
где эквивалентный размер окна для уровня составляет отсчет.
#
fc —
частота максимального значения спектрального эксцесса
скаляр
Details
Частота максимального значения спектрального эксцесса в kgram, возвращаемая в виде скаляра:
Значение fc можно использовать в качестве центральной частоты для оптимального полосового фильтра, максимизирующего эксцесс огибающей отфильтрованного сигнала. Максимизация эксцесса огибающей облегчает выделение результирующей импульсной составляющей в качестве информативного признака.
#
wc —
размер окна максимального значения спектрального эксцесса
скаляр
Details
Размер окна максимального значения спектрального эксцесса в kgram, возвращаемый в виде скаляра в отсчетах.
Значение wc можно использовать в качестве оптимального размера окна для функции pkurtosis. В качестве примера см. Построение графика спектрального эксцесса с заданным размером окна.
#
bw —
рекомендуемая полоса пропускания для оптимального полосового фильтра
скаляр
Details
Рекомендуемая полоса пропускания для оптимального полосового фильтра, возвращаемая в виде скаляра:
Примеры
Вычисление куртограммы нестационарного сигнала
Details
Вычислим куртограмму нестационарного сигнала, сравним разные значения максимального уровня куртограммы и проанализируем куртограмму с нормированной частотой. Полученные параметры можно использовать для определения параметров фильтра, применяемого при предварительной обработке сигнала с целью улучшения обнаружения переходных процессов.
Создадим чирп-сигнал с белым гауссовым шумом.
fs = 1000
t = collect(0:1/fs:10)
f1 = 300
f2 = 400
xc = EngeeDSP.Functions.chirp(t, f1, 10, f2)
x = xc .+ randn(length(t))
Построим куртограмму, используя частоту дискретизации fs.
import EngeeDSP.Functions: kurtogram
kurtogram(x, fs)

Куртограмма показывает значения эксцесса для разных размеров окон и частотных диапазонов. Высокое значение эксцесса указывает на выраженную нестационарность или отклонение от гауссова распределения. Над графиком указаны максимальное значение эксцесса, а также соответствующие ему размер окна и центральная частота. Ширина полосы пропускания зависит от размера окна.
Исследуем влияние снижения максимального уровня до 5.
level = 5
kurtogram(x, fs, level)

Снижение разрешения становится очевидным и приводит к уменьшению пикового значения эксцесса и смещению центральной частоты.
Теперь построим куртограмму, не указывая частоту или период дискретизации.
kurtogram(x)

В этом случае куртограмма отображается с нормированной частотой.
Параметры над графиком позволяют выбрать полосовой фильтр для предварительной обработки данных и улучшить выделение нестационарной составляющей. Функция kurtogram также может вернуть эти параметры, чтобы использовать их непосредственно в функциях фильтрации или при анализе спектрального эксцесса.
kgram, f, w, fc, wc, bw = kurtogram(x, out = :data)
println("wc = ", wc,
"\nfc = ", fc,
"\nbw = ", bw)
wc = 256.0
fc = 1.9512235621905356
bw = 0.02454369260617026
Значение wc соответствует оптимальному размеру окна первого графика, а fc и bw — его центральной частоте и полосе пропускания после перехода к нормированной частоте. Переменная kgram представляет собой матрицу куртограммы, а f и w — соответствующие векторы частот и размеров окон.
Построение графика спектрального эксцесса с заданным размером окна
Details
Функция pkurtosis использует размер окна (временное разрешение), определяемый функцией pspectrum по умолчанию. Можно задать собственный размер окна. В этом примере определим оптимальный размер окна с помощью функции kurtogram и используем его при вычислении спектрального эксцесса.
Создадим чирп-сигнал с белым гауссовым шумом.
fs = 1000
t = collect(0:1/fs:10)
f1 = 300
f2 = 400
x = EngeeDSP.Functions.chirp(t, f1, 10, f2) .+ randn(length(t))
Построим график спектрального эксцесса с размером окна по умолчанию.
import EngeeDSP.Functions: pkurtosis
pkurtosis(x, fs)
plot!(title = "Spectral Kurtosis with Default Window Size", legend = (0.1, 0.93))
Вычислим оптимальный размер окна с помощью функции kurtogram.
import EngeeDSP.Functions: kurtogram
kurtogram(x, fs, out = :plot)

Куртограмма демонстрирует составляющую чирп-сигнала в диапазоне от 300 до 400 Гц и показывает, что оптимальный размер окна составляет 256 отсчетов. Передадим это значение в переменной w0 функции pkurtosis.
w0 = 256
pkurtosis(x, fs, w0)
plot!(title = "Spectral Kurtosis with Optimum Window Size of 256", legend = (0.1, 0.93))
Основной всплеск характеризуется более высокими значениями эксцесса. Это улучшает различимость стационарной и нестационарной составляющих и облегчает выделение нестационарной составляющей в качестве информативного признака.
Дополнительно
Куртограмма
Details
Функция kurtogram предоставляет данные для анализа спектрального эксцесса. Она вычисляет спектральный эксцесс для нескольких размеров окна с помощью алгоритма быстрого построения куртограммы. Помимо самой куртограммы и соответствующих векторов частот и размеров окон, функция возвращает оптимальный размер окна и другие параметры настройки фильтра. Результаты вычислений также можно отобразить на графике.
Алгоритм быстрого построения куртограммы использует полосовую фильтрацию и упрощенную схему вычислений для приближенной оценки спектрального эксцесса при каждом размере окна и каждой частоте. Более точные алгоритмы используют кратковременное преобразование Фурье. Кроме того, по сравнению с полным алгоритмом построения куртограммы, данный метод сокращает количество итераций, необходимых для охвата плоскости «частота — размер окна» [1].