В этом примере показано, как использовать приложение Vavelet Signal Denoiser для обнуления действительного 1-D сигнала. Можно создать и сравнить несколько версий денонсированного сигнала с приложением и экспортировать требуемый денонсированный сигнал в рабочее пространство MATLAB ®. Для воспроизведения запрещенного сигнала в рабочей области или применения тех же самых параметров к другим данным можно создать и отредактировать сценарий 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 и в разделе Signal Processing and Communications выберите Wavelet Signal Denoiser. Вы также можете запустить приложение, введя waveletSignalDenoiser в командной строке MATLAB.
Загрузите шумный сигнал из рабочей области в приложение, щелкнув Загрузить сигнал на панели инструментов. В списке переменных рабочей области, которые можно загрузить в приложение, выберите fNoisy и нажмите кнопку ОК.

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

Изучите график fNoisy. Приложение строит график исходного сигнала, fNoisy, денойзированный сигнал, fNoisy1и грубой масштабной аппроксимации сигнала, Approximation.
1. На панели «Деноизированные сигналы» перечислены все версии деноизированного сигнала. В настоящее время список содержит только сигнал, созданный приложением с использованием имени по умолчанию. fNoisy1.
Можно изменить имя по умолчанию, щелкнув его правой кнопкой мыши, выбрав в меню команду «Переименовать сигнал», введя новое имя в диалоговом окне и нажав кнопку «ОК».
Можно удалить запрещенный сигнал, щелкнув его имя правой кнопкой мыши и выбрав команду Delete Denoised Signal во всплывающем меню.
2. На панели Текущие параметры вейвлета (Current Wavelet Parameters) перечисляются параметры деноизирования, применяемые для создания fNoisy1.
3. Выполните зумирование и панорамирование области, представляющей интерес. Сначала наведите курсор на график, чтобы открыть плавающую палитру.
Затем выберите нужное действие из палитры.
Если выбрано увеличение или уменьшение масштаба, управление масштабом осуществляется колесиком мыши.
4. Переключите сигналы, видимые на графике fNoisy, с помощью:
Щелкните Сигналы (Signals) ▼ на панели инструментов и с помощью раскрывающегося меню переключите видимость исходных и обозначенных графиков сигналов.
Щелчок по отдельным сигналам в легенде графика.
5. Проверьте график коэффициентов.

Коэффициенты красного цвета используются для восстановления денозированного сигнала. Панель Текущие параметры вейвлета (Current Wavelet Parameters) указывает, что 9-уровневая вейвлет-декомпозиция использовалась для обессоливания сигнала.
Выполните зумирование и панорамирование области, представляющей интерес. Сначала наведите курсор на график, чтобы открыть плавающую палитру. Затем выберите нужное действие из палитры.
Если выбрано увеличение или уменьшение, колесико мыши управляет увеличением, а не полосой прокрутки.
При увеличении, уменьшении или панорамировании D1 уровень коэффициентов, масштаб применяется ко всем уровням.
Перейдите на вкладку Вейвлет (Wavelet). Эта панель инструментов используется для настройки и применения параметров деноизирования для выбранного деноизируемого сигнала.

Перечисленные значения являются параметрами, используемыми для создания деноизированного сигнала. fNoisy1. Чтобы изменить значения этих параметров, работайте слева направо на панели инструментов:
1. В раскрывающемся меню Вейвлет выберите семейство вейвлетов Daubechies, db. Из-за этого действия:
Раскрывающееся поле Number изменяется на 1. Изменение значения на 2.
На графике fNoisy сразу появляется баннер с синим текстом, утверждающий, что изменения параметров вейвлета находятся в режиме черновика. Этот текст появляется всякий раз, когда в сигнале ожидаются изменения. Баннер исчезает при применении изменений с помощью кнопки Denoise или при переходе от сигнала к другому сигналу.
2. В раскрывающемся меню «Метод» выберите Universal Threshold.
3. Чтобы определить 10-уровневую вейвлет-декомпозицию, измените значение Level на 10.
4. Путем изменения метода на Universal Threshold, параметр Правило автоматически изменен с Median кому Soft. Измените настройку на Hard.
5. Щелкните Уровень (Level-Dependent).
6. Примените новые значения для этих настроек, нажав Denoise.
Панель Current Wavelet Parameters (Текущие параметры вейвлета) обновляется с новыми параметрами, используемыми для обессоливания сигнала, и приложение переигрывает сигнал обессоливания. fNoisy1.

Примечание.Все параметры контекстуальны. Возможные значения одного параметра могут зависеть от текущего выбранного значения другого параметра. Невозможно сделать несовместимый выбор. Например, когда деноизирующим методом является FDR, возможно только правило пороговой обработки: hard. В этом случае никакие другие значения в раскрывающемся меню «Правило» не отображаются.
Если вам нравится определенный сигнал, но вы хотите исследовать больше параметров, вы можете дублировать его. Затем можно изменить параметры дубликата без потери исходных параметров.
1. На панели «Деноизированные сигналы» выберите fNoisy1. Затем на панели инструментов на вкладке «Denoiser Signal» нажмите кнопку «Дублировать».
Дублирующий сигнал, fNoisy1Copy, выделяется в Denoised Signals.
Параметры отключения для дубликата перечислены в разделе Текущие параметры вейвлета.
Дубликат отображается как толстая линия на графике fNoisy. Легенда печати обновляется для включения дубликата.
2. На вкладке «Вейвлет» измените значение параметра «Уровень» на 2и нажмите Denoise. Приложение денонсирует сигнал, используя двухуровневую вейвлет-декомпозицию. Кроме того, приложение:
Пересчитывает и выводит на график аппроксимацию для дубликата.
Обновление графика коэффициентов для отображения уровней дубликата.
Поскольку fNoisy1Copy подсвечивается, строится его аппроксимация. Приложение всегда строит график аппроксимации для выбранного в данный момент деноизированного сигнала. Это поведение можно продемонстрировать следующим образом. В легенде печати нажмите fNoisy1 и fNoisy1Copy. Названия обоих денозированных сигналов исчезают, и эти два сигнала больше не строятся. Видны только исходные графики сигнала и аппроксимации.

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

Всегда можно вернуться к использованию исходных параметров по умолчанию путем добавления нового деноизированного сигнала. На панели инструментов на вкладке «Сигнал» нажмите кнопку «Добавить».
Добавленный денойзированный сигнал, fNoisy2, подсвечивается в списке «Деноизированные сигналы». Параметры отключения по умолчанию перечислены в разделе Текущие параметры вейвлета (Current Wavelet Parameters).
Новый денозированный сигнал изображен как толстая линия. Аппроксимация также вычисляется и наносится на график. Легенда печати обновляется для включения fNoisy2.
Если вы хотите применить те же самые параметры к другим данным, вы можете использовать приложение для создания сценария, который воспроизводит выбранный сигнал. Затем можно изменить и сохранить сценарий для собственных целей. Чтобы выполнить дальнейший анализ, можно экспортировать в рабочую область денонсированный сигнал.
Щелкнуть fNoisy2 в Деноизированных сигналах. На вкладке «Signal Denoiser» панели инструментов в меню «Export ▼» выберите Generate MATLAB Script. В редакторе MATLAB откроется сценарий без названия со следующим исполняемым кодом:
fNoisy2 = wdenoise(fNoisy,9, ... 'Wavelet', 'sym4', ... 'DenoisingMethod', 'Bayes', ... 'ThresholdRule', 'Median', ... 'NoiseEstimate', 'LevelIndependent');
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

Щелкнуть fNoisy2 в Деноизированных сигналах. Затем на панели инструментов на вкладке Signal Denoiser установите зеленый флажок Export ▼. С тех пор fNoisy2 уже существует в рабочей области, можно принудительно экспортировать и перезаписать переменную рабочей области. Кроме того, можно отменить экспорт, переименовать обозначенный сигнал в приложении или переменную рабочей области и экспортировать снова. Появится баннер, подтверждающий экспорт сигнала. Чтобы удалить баннер без возможности восстановления, нажмите X чтобы закрыть или импортировать новый сигнал в приложение.
Так как у вас есть чистый сигнал в рабочем пространстве, рассчитайте отношение «знак-шум» денойзированного сигнала.
snrWavelet = -20*log10(norm(abs(fClean-fNoisy2))/norm(fClean))
snrWavelet = 35.9623
При использовании функции «Обработка сигнала» Toolbox™ обнуление сигнала с помощью фильтра скользящего среднего и фильтра Савицки-Голая и вычисление SNR каждого денатурированного сигнала.
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 вейвлет.