Каков эффект шумоподавления сигнала на основе вейвлет-анализа MATLAB? Приложение для вейвлет-анализа

задняя часть

Мы рассмотрели возможность использования вейвлет-анализа для фильтрации шума в данных временных рядов.

Фото:Stephen KraakmoonUnsplash

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

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

Шумоподавление с помощью вейвлетов

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

Получайте реальные сигналы

В этом случае я буду загружать временные ряды землетрясений, записывающие сильное землетрясение. Я буду использовать модуль Obspy для загрузки данных из IRIS. Подробнее о том, как использовать Obspy для загрузки осциллограмм, см.предыдущая статья. Я загружу произвольно выбранную форму сигнала для события "2020-05-15 Mww 6.5 Nevada", расположенного в точке (38,1689° с.ш., 117,8497° з.д.).

Это сохраняет данные mseed и график «потока» в каталог сценария. Я также отфильтровал сигнал высокими частотами, чтобы получить высокочастотную часть временного ряда.

15 мая 2020 г. Форма волны вертикальной составляющей Mww 6,5 Невада в II-PFO (изображение предоставлено автором)

Конвертировать mseed в матовый формат

Теперь мы хотим сделать данные читаемыми в MATLAB. Я написал инструмент, который можетПреобразование любых данных в формате mseed в формат mat. В этом случае я буду использовать его.

Форма сигнала вертикальной составляющей II-PFO от 15 мая 2020 г. Mww 6,5 Невада с использованием MATLAB (изображение предоставлено автором)

Уменьшите шум сигнала с помощью неусеченного вейвлет-преобразования

Я буду использовать функцию Matlab wdenoise для шумоподавления сигнала до уровня 9, используя вейвлеты sym4 и db1. wdenoise использует эмпирический байесовский подход с априорными значениями Коши для шумоподавления сигнала.

Сейсмические временные ряды, очищенные с помощью sym4 (изображение предоставлено автором).

В приведенном выше коде я удаляю шум сейсмических временных рядов, используя пороговое значение блока 9-го уровня, устанавливая пару «имя-значение» «Метод шумоподавления», «BlockJS». Я использовал вейвлет sym4.

В результате разница в силе сигнала по сравнению с исходным временным рядом составляет 82,5786.

Кроме того, я попытался сделать то же самое с другим вейвлетом --db1.

Сейсмические временные ряды, очищенные с помощью db1 (изображение предоставлено автором).

Это дает результирующую разницу в силе сигнала 34,5294 по сравнению с исходным временным рядом. Следовательно, мы находим, что разница в вейвлете sym4 велика. Мы также можем поиграть с несколькими другими параметрами, включая уровень.

Я попытался изменить уровни на 2, 5, 10, и получившиеся вейвлеты «sym4» имеют SNR 82,7493, 82,5789, 82,5786 соответственно. Разница между отношениями сигнал/шум разных уровней невелика, что может свидетельствовать о том, что количество высокочастотного шума в данном случае не является чрезмерным. Попробуем проверить эту гипотезу на зашумленных синтетических данных (в этом случае у нас будет полный контроль).

Реконструкция вейвлета на основе 4-уровневой аппроксимации (изображение предоставлено автором).

Полный код MATLAB

clear; close; clc;

Шумоподавление зашумленных синтетических данных с помощью вейвлета

Этот пример получен из примера MATLAB. В приведенном выше случае для тех же данных я получаю SNR 9,6994 и 9,4954 для вейвлетов sym4 и db1. Это также показывает, что существует явная разница в sym4. Обратите внимание, что "sym4" работает хорошо в большинстве случаев, возможно, поэтому он был принят по умолчанию.

Вейвлетное шумоподавление синтетических данных, сгенерированных MATLAB (изображение предоставлено автором)

в заключении

Мы видели, как загрузить сейсмический сигнал, преобразовать его из формата mseed в формат mat, а затем удалить из него шум с помощью вейвлет-анализа. Сначала мы выполнили вейвлет-шумоподавление на временных рядах высокочастотных сейсмических данных, но после реконструкции различия не были видны визуально. Но глядя на соотношение сигнал/шум, мы видим разницу. Мы также строим вейвлет-коэффициенты в разных масштабах. Кроме того, я демонстрирую влияние вейвлет-шумоподавления на синтетический временной ряд.