Denoise сигнал с Wavelet Signal Denoiser

Этот пример показывает, как использовать приложение Wavelet Signal Denoiser для denoise 1D сигнал с действительным знаком. Можно создать и сравнить несколько версий сигнала denoised с приложением и экспортировать желаемый сигнал denoised в рабочую область MATLAB®. Чтобы воспроизвести сигнал denoised в вашей рабочей области или применить те же параметры шумоподавления к другим данным, можно сгенерировать и отредактировать скрипт MATLAB. Этот пример иллюстрирует один возможный рабочий процесс.

Импортируйте данные в приложение

Загрузите данные в рабочее пространство MATLAB. Файл .mat содержит чистую версию и шумную версию сигнала. Постройте обе версии сигнала.

load fdata
plot(fNoisy,'b-')
hold on
plot(fClean,'r-','LineWidth',2)
legend('Noisy Signal','Clean Signal')
grid on

Откройте приложение Wavelet Signal Denoiser. От Панели инструментов MATLAB откройте вкладку Apps и при Обработке сигналов и Коммуникациях, нажмите Wavelet Signal Denoiser. Можно также запустить приложение путем ввода waveletSignalDenoiser в подсказке команды MATLAB.

Загрузите сигнал с шумом из рабочей области в приложение путем нажатия на Load Signal в панели инструментов. Из списка переменных рабочей области, которые могут загрузиться в приложение, выберите fNoisy и нажмите ОК.

Приложение импортирует сигнал с шумом и сразу denoises это с помощью параметров по умолчанию.

Исследование импортированных данных

Исследуйте график fNoisy. Приложение строит исходный сигнал, fNoisy, сигнал denoised, fNoisy1 и крупное приближение шкалы сигнала, Approximation.

1. Панель Сигналов Denoised перечисляет все версии сигнала denoised. Список в настоящее время содержит только сигнал, что приложение создало использование имени по умолчанию, fNoisy1.

  • Можно поменять имя по умолчанию путем щелчка правой кнопкой по нему, выбора Rename Denoised Signal из меню, ввода нового имени в диалоговом окне и нажатия "ОК".

  • Можно удалить сигнал denoised путем щелчка правой кнопкой по его имени и выбора Delete Denoised Signal из всплывающего меню.

2. Текущая панель Параметров Вейвлета перечисляет параметры шумоподавления, примененные, чтобы создать fNoisy1.

3. Масштабируйте и панорамируйте видимую область. Во-первых, установите курсор на график показать плавающую палитру.

Затем выберите желаемое действие из палитры.

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

4. Переключите, чего сигналы видимы в графике fNoisy:

  • Нажатие на Signals ▼ в панели инструментов и использование выпадающего меню, чтобы переключить видимость оригинала и denoised сигнализируют о графиках.

  • Нажатие на человека сигнализирует в легенде графика.

5. Исследуйте Содействующий график.

Коэффициенты красного цвета используются, чтобы восстановить сигнал denoised. Текущая панель Параметров Вейвлета указывает, что 9-уровневое разложение вейвлета использовалось к denoise сигнал.

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

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

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

Измените параметры шумоподавления

Кликните по вкладке Wavelet. Используйте эту панель инструментов, чтобы настроить и применить параметры шумоподавления для выбранного сигнала denoised.

Перечисленные значения являются параметрами, используемыми, чтобы создать сигнал denoised, fNoisy1. Изменить значения этих настроек, работая слева направо в панели инструментов:

1. В выпадающем меню Wavelet выберите семейство вейвлетов Daubechies, db. Из-за этого действия:

  • Номер выпадающее поле изменяется на 1. Измените значение на 2.

  • Баннер с синим текстом сразу появляется в графике fNoisy, утверждая, что изменения параметра вейвлета находятся в черновом режиме. Этот текст появляется каждый раз, когда у вас есть любые незаконченные изменения в сигнале. Баннер исчезает, когда вы или применяете изменения при помощи кнопки Denoise или перешли далеко от сигнала до другого сигнала.

2. Из выпадающего меню Method выберите Universal Threshold.

3. Чтобы задать 10-уровневое разложение вейвлета, измените значение Уровня к 10.

4. Путем изменения Метода на Universal Threshold, настройки Rule, измененные автоматически от Median до Soft. Измените настройки к Hard.

5. Нажмите Level-Dependent.

6. Примените новые значения для этих настроек путем нажатия на Denoise.

Текущие обновления панели Параметров Вейвлета с новыми параметрами, используемыми к denoise сигнал и приложение, повторно строят сигнал denoised, fNoisy1.

Примечание: Все параметры являются контекстными. Возможные значения для одного параметра могут зависеть от в настоящее время выбранного значения другого параметра. Вы не можете сделать несовместимый выбор. Например, когда методом шумоподавления является ФРГ, существует только возможное правило пороговой обработки: трудно. В этом экземпляре никакие другие значения не перечислены в выпадающем меню Rule.

Копируйте сигнал Denoised и сравните приближения

Если вы любите конкретный сигнал denoised, но хотите исследовать больше параметров шумоподавления, можно копировать его. Можно затем изменить параметры для копии, не теряя исходные параметры.

1. От панели Сигналов Denoised выберите fNoisy1. Затем на панели инструментов, от вкладки Signal Denoiser, нажимают Duplicate.

  • Дублирующийся сигнал, fNoisy1Copy, кажется подсвеченным в Сигналах Denoised.

  • Параметры шумоподавления для копии перечислены в Текущих Параметрах Вейвлета.

  • Копия построена как толстая строка в графике fNoisy. Легенда графика обновляет, чтобы включать копию.

2. На вкладке Wavelet измените Уровень на 2, и затем нажмите Denoise. Приложение denoises сигнал с помощью двухуровневого разложения вейвлета. Кроме того, приложение:

  • Повторно вычисляет и строит приближение для копии.

  • Обновляет Содействующий график показать уровни для копии.

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

Пунктирная линия в графике представляет приближение. Поскольку fNoisy1Copy подсвечен в списке Сигналов Denoised, построенное приближение является результатом двухуровневого разложения вейвлета. Приближение является относительно шумным. Теперь selectfNoisy1 в списке. Приближение 10-уровневого разложения вейвлета отличается.

Восстановите исходные параметры

Можно всегда возвращаться к использованию исходных параметров по умолчанию путем добавления нового сигнала denoised. От панели инструментов, на вкладке Signal Denoiser, нажимают Add.

  • Добавленный сигнал denoised, fNoisy2, кажется подсвеченным в списке Сигналов Denoised. Параметры шумоподавления по умолчанию перечислены в Текущих Параметрах Вейвлета.

  • Новый сигнал denoised построен как толстая строка. Приближение вычислено и построено также. Легенда графика обновляет, чтобы включать fNoisy2.

Экспортируйте результаты

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

Экспортируйте скрипт

Нажмите fNoisy2 in Denoised Signals. На вкладке Signal Denoiser панели инструментов, от Экспорта ▼ меню, выбирают Generate MATLAB Script. Неназванный скрипт открывается в вашем редакторе MATLAB следующим исполняемым кодом:

fNoisy2 = wdenoise(fNoisy,9, ...
    'Wavelet', 'sym4', ...
    'DenoisingMethod', 'Bayes', ...
    'ThresholdRule', 'Median', ...
    'NoiseEstimate', 'LevelIndependent');

Входные параметры wdenoise заполняются со значениями, используемыми, чтобы создать fNoisy2. Сохраните скрипт и затем запуститесь. Это создаст переменную fNoisy2 в вашей рабочей области.

Загрузите файл fdataTS. Файл содержит шумные данные 100 временных рядов. Каждые временные ряды имеют 4 096 точек данных. Данные содержатся в переменной TimeTable типа под названием fdataTS.

load fdataTS

Чтобы применить параметры шумоподавления к fdataTS, отредактируйте скрипт, заменив fNoisy на fdataTS и fNoisy2 с fdataTSclean. Затем запустите скрипт.

fdataTSclean = wdenoise(fdataTS,9, ...
    'Wavelet', 'sym4', ...
    'DenoisingMethod', 'Bayes', ...
    'ThresholdRule', 'Median', ...
    'NoiseEstimate', 'LevelIndependent');

Сравните 15-е шумные временные ряды с его denoised версией.

subplot(2,1,1)
plot(fdataTS.Time,fdataTS.fTS15)
title('Original Time Series')
grid on
subplot(2,1,2)
plot(fdataTSclean.Time,fdataTSclean.fTS15)
title('Denoised Time Series')
grid on

Экспортируйте сигнал Denoised

Нажмите fNoisy2 in Denoised Signals. Затем на панели инструментов, от вкладки Signal Denoiser, кликают по зеленой галочке на Экспорт ▼. Поскольку fNoisy2 уже существует в вашей рабочей области, можно обеспечить экспорт и перезаписать переменную рабочей области. Также можно отменить экспорт, переименовать или сигнал denoised в приложении или переменную рабочей области, и экспортировать снова. Баннер кажется подтверждающим, что сигнал экспортируется. Чтобы постоянно удалить баннер, или нажмите X, чтобы закрыть или импортировать новый сигнал в приложение.

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

snrWavelet = -20*log10(norm(abs(fClean-fNoisy2))/norm(fClean))
snrWavelet = 35.9623

Если у вас есть Signal Processing Toolbox™ denoise сигнал с помощью фильтра скользящего среднего значения, и Savitzky-Golay фильтруют и вычисляют ОСШ каждого сигнала denoised.

fmv = smoothdata(fNoisy,'movmean',25);
snrMovingAverage = -20*log10(norm(abs(fClean-fmv))/norm(fClean))
snrMovingAverage = 26.0040
fsg = smoothdata(fNoisy,'sgolay',25);
snrSavitskyGolay = -20*log10(norm(abs(fClean-fsg))/norm(fClean))
snrSavitskyGolay = 28.8932

Вы достигаете превосходящего шумоподавления результатов с вейвлетом sym4.