Денуазируйте сигнал с Wavelet Signal Denoiser

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

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

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

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Noisy Signal, Clean Signal.

Откройте приложение Wavelet Signal Denoiser. На панели инструментов MATLAB откройте вкладку Apps и в разделе Signal Processing and Communications нажмите Wavelet Signal Denoiser. Также можно запустить приложение, набрав waveletSignalDenoiser в командной строке MATLAB.

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

Приложение импортирует сигнал с шумом и немедленно денофицирует его с помощью параметров по умолчанию.

Изучение импортированных данных

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

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

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

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

2. На панели Current Wavelet Parameters перечислены параметры шумоподавления, примененные к созданию fNoisy1.

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

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

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

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

  • Щелчок по отдельным сигналам в легенде графика.

5. Исследуйте график Коэффициенты.

Коэффициенты красного цвета используются для восстановления деноизмененного сигнала. Панель Current Wavelet Parameters указывает, что для денуизации сигнала использовалось 9-уровневое разложение вейвлета.

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

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

  • При масштабировании, масштабировании или панорамировании D1 уровень коэффициентов, масштабирование применяется ко всем уровням.

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

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

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

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

  • Поле выпадающего списка Number изменяется на 1. Измените значение на 2.

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

2. В раскрывающемся меню Method выберите Universal Threshold.

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

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

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

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

Панель Current Wavelet Parameters обновляется новыми параметрами, используемыми для денуилизации сигнала, и приложение воспроизводит деноизмененный сигнал fNoisy1.

Примечание. Все параметры являются контекстными. Возможные значения для одного параметра могут зависеть от текущего выбранного значения другого параметра. Вы не можете сделать несовместимый выбор. Для примера, когда метод шумоподавления является FDR, существует только возможное правило порога: hard. В данном случае в раскрывающемся меню Rule нет других значений.

Дублирование деноизмененного сигнала и сравнение приближений

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

1. На панели «Деноизмененные сигналы» выберите fNoisy1. Затем на панели инструментов на вкладке Signal Denoiser нажмите Duplicate.

  • Повторяющийся сигнал, fNoisy1Copy, появляется подсвеченным в Denoised Signals.

  • Параметры шумоподавления для дубликата перечислены в Current Wavelet Parameters.

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

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

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

  • Обновляет график Коэффициенты, чтобы показать уровни для повторяющегося.

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

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

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

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

  • Добавленный деноизированный сигнал, fNoisy2, появляется выделенным в списке Denoised Signals. Параметры шумоподавления по умолчанию перечислены в разделе Параметры тока вейвлета.

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

Экспорт результатов

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

Экспорт скрипта

Нажмите fNoisy2 в деноизмененных сигналах. На вкладке Signal Denoiser панели инструментов в меню Export ▼ выберите Generate MATLAB Script. В редакторе MATLAB откроется скрипт без названия со следующим исполняемым кодом:

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

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

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

load fdataTS

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

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

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

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

Figure contains 2 axes. Axes 1 with title Original Time Series contains an object of type line. Axes 2 with title Denoised Time Series contains an object of type line.

Экспорт деноизмененного сигнала

Нажмите fNoisy2 в деноизмененных сигналах. Затем на панели инструментов, на вкладке Signal Denoiser, нажмите зеленую галочку на экспорт ▼. Начиная с fNoisy2 уже существует в рабочем пространстве, можно принудительно экспортировать и перезаписать переменную рабочей области. Кроме того, можно отменить экспорт, переименовать или деноизированный сигнал в приложении или переменную рабочей области и снова экспортировать. Появляется баннер, подтверждающий экспорт сигнала. Чтобы окончательно удалить баннер, либо нажмите X чтобы закрыть или импортировать новый сигнал в приложение.

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

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

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

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 вейвлет.

См. также

Функции

Приложения

Похожие темы