Проведены испытания метода синхросжатия (synchrosqueezing) кратковременного преобразования Фурье на существенно нестационарных сигналах. На испытанных сигналах синхросжатие улучшало визуальную резкость изображения, но для улучшения разрешения оказалось не эффективно.
Ключевые слова: short-time Fourier transform, synchrosqueezing, спектрограммы, нестационарные сигналы.
Кратковременное преобразование Фурье (Short-Time Fourier Transform, STFT) широко используется для частотно-временного анализа сигналов, позволяя строить двумерные спектрограммы. Недостатком STFT является то, что для него разрешение по времени и разрешение по частоте — взаимно обратные величины, поэтому невозможно их максимизировать в одной спектрограмме. На практике это может приводить к визуальной размытости спектрограмм и затруднять их интерпретацию. В последние годы разработан метод обработки данных STFT, называемый синхросжатием (synchrosqueezing) [1, 2, 3]. Цель данной работы состояла в проверке эффективности синхросжатия для случая резко нестационарных сигналов. Была использована библиотека ssqueezepy [3] и файлы данных, полученных от датчиков вибраций. Рассмотрим необходимые фрагменты программы на Python. Функция ssq_stft вычисляет STFT и проводит синхросжатие:
…
from ssqueezepy import ssq_stft
...
# длина БПФ, длина окна, частота дискретизации
n_fft = 512
win_len = n_fft // 1
fs = 500.0
# прочитать сигнал из файла
f = open('H:\\Vibro\\FridgeY_21804_.txt')
signal_1d: ndarray = np.loadtxt(f, dtype=float)
f.close()
# вычислить спектрограммы
Tsx, Sx, ssq_freqs, *_ = ssq_stft(signal_1d, n_fft=n_fft, win_len=win_len,
window='blackmanharris', fs=fs)
# показать спектрограммы
signal_2d_show(np.flipud(Sx), dynamic_range=1000, colormap='gnuplot2')
signal_2d_show(np.flipud(Tsx), dynamic_range=1000,
colormap='gnuplot2')
...
На рис. 1 приведен пример сигнала от датчика виброускорения.
Рис. 1. Вибрация при выключении компрессора холодильника
В момент времени 10 с размыкается электрическая цепь питания компрессора, после чего происходит развитие и последующее затухание вибрации всей конструкции холодильника.
На рис. 2 показана спектрограмма этого сигнала, полученная традиционным методом STFT при частоте дискретизации 500 Гц, длине БПФ 512 и динамическом диапазоне отображения 60 дБ. Видно, что весь переходный процесс занял около 8 с и проходил в несколько этапов. До выключения компрессор создавал почти синусоидальную вибрацию на частоте чуть меньше 50 Гц. При выключении компрессора сначала наблюдается кратковременная высокочастотная вибрация, связанная с электрическим размыканием цепи двигателя. Далее двигатель в течение примерно одной секунды быстро снижает скорость и останавливается. При этом накопленная энергия поочередно отдается механическим колебаниям всей конструкции, начиная от их верхних гармоник и заканчивая основной гармоникой с частотой приблизительно 6 Гц. Затем колебания на нескольких гармониках постепенно затухают уже при остановленном двигателе.
Рис. 2. Спектрограмма STFT
На рис. 3 показана спектрограмма, обработанная синхросжатием (Fourier-based SynchroSqueezing Transform, FSST). Сравнение с предыдущей позволяет отметить, что в данном случае синхросжатие мало что может добавить к приведенному выше анализу переходного процесса. Более узкие спектральные линии на стационарных участках сигнала, возможно, позволяют более точно визуально оценить их частоты.
Рис. 3. Спектрограмма FSST
Можно предположить, что применение синхросжатия к спектрограммам резко нестационарных сигналов не дает существенного улучшения разрешения, хотя и полезно для визуального восприятия изображения.
Литература:
- Oberlin T., Meignen S., Perrier V. The Fourier-based synchrosqueezing transform / 2014 IEEE international conference on acoustics, speech and signal processing (ICASSP). — IEEE, 2014. — С. 315–319.
- Meignen S., Oberlin T., Pham D. H. Synchrosqueezing transforms: From low-to high-frequency modulations and perspectives / Comptes Rendus Physique. — 2019. — Т. 20. — №. 5. — С. 449–460.
- Synchrosqueezing in Python [Электронный ресурс] / John Muradeli. — URL: https://github.com/OverLordGoldDragon/ssqueezepy (дата обращения: 10.03.2022).