wdenoise

Вейвлет сигнала шумоподавления

Описание

пример

XDEN = wdenoise(X) денофицирует данные в X используя эмпирический байесовский метод с приором Коши. По умолчанию в sym4 вейвлет используют с апостериорным медианным пороговым правилом. Шумоподавлением сведено к минимуму floor(log2N) и wmaxlev(N,'sym4') где N - количество выборок в данных. (Для получения дополнительной информации см. wmaxlev.) X является действительным вектором, матрицей или расписанием.

  • Если X является матрицей, wdenoise денонсирует каждый столбец X.

  • Если X является расписанием, wdenoise должен содержать действительные векторы в отдельных переменных или одну действительную матрицу данных.

  • X приняты равномерно выбранными.

  • Если X является расписанием, и временные метки не разнесены линейно, wdenoise выдает предупреждение.

XDEN = wdenoise(X,LEVEL) осуждает X вплоть до LEVEL. LEVEL - положительное целое число, меньше или равное floor(log2N) где N - количество выборок в данных. Если не задано, LEVEL по умолчанию равен минимуму floor(log2N) и wmaxlev(N,'sym4').

пример

XDEN = wdenoise(___,Name,Value) задает опции, использующие аргументы пары "имя-значение" в дополнение к любому из входных параметров в предыдущих синтаксисах.

[XDEN,DENOISEDCFS] = wdenoise(___) возвращает деноизированные коэффициенты вейвлет и масштабирование в массиве ячеек DENOISEDCFS. Элементы DENOISEDCFS - в порядке уменьшения разрешения. Конечный элемент DENOISEDCFS содержит аппроксимационные (масштабирующие) коэффициенты.

[XDEN,DENOISEDCFS,ORIGCFS] = wdenoise(___) возвращает исходные коэффициенты вейвлета и масштабирования в массиве ячеек ORIGCFS. Элементы ORIGCFS - в порядке уменьшения разрешения. Конечный элемент ORIGCFS содержит аппроксимационные (масштабирующие) коэффициенты.

Примеры

свернуть все

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

load noisdopp
xden = wdenoise(noisdopp);

Постройте график исходных и деноизированных сигналов.

plot([noisdopp' xden'])
legend('Original Signal','Denoised Signal')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original Signal, Denoised Signal.

Обнулите расписание зашумленных данных до уровня 5 с помощью блока порога.

Загрузите зашумленный набор данных.

load wnoisydata

Обнулите данные до уровня 5, используя блок пороговое значение путем установки пары "имя-значение" 'DenoisingMethod','BlockJS'.

xden = wdenoise(wnoisydata,5,'DenoisingMethod','BlockJS');

Постройте график исходных данных и деноизированных данных.

h1 = plot(wnoisydata.t,[wnoisydata.noisydata(:,1) xden.noisydata(:,1)]);
h1(2).LineWidth = 2;
legend('Original','Denoised')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Denoised.

Денуризируйте сигнал по-разному и сравните результаты.

Загрузите файл данных, который содержит чистые и шумные версии сигнала. Постройте график сигналов.

load fdata.mat
plot(fNoisy,'r-')
hold on
plot(fClean,'b-')
grid on
legend('Noisy','Clean');

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

Денуризируйте сигнал, используя sym4 и db1 вейвлеты с девятиуровневым вейвлет-разложением. Постройте график результатов.

cleansym = wdenoise(fNoisy,9,'Wavelet','sym4');
cleandb = wdenoise(fNoisy,9,'Wavelet','db1');
figure
plot(cleansym)
title('Denoised - sym')
grid on

Figure contains an axes. The axes with title Denoised - sym contains an object of type line.

figure
plot(cleandb)
title('Denoised - db')
grid on

Figure contains an axes. The axes with title Denoised - db contains an object of type line.

Вычислите ОСШ каждого деноизированного сигнала. Подтвердите, что используя sym4 вейвлет дает лучший результат.

snrsym = -20*log10(norm(abs(fClean-cleansym))/norm(fClean))
snrsym = 35.9623
snrdb = -20*log10(norm(abs(fClean-cleandb))/norm(fClean))
snrdb = 32.2672

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

load fdataTS.mat
cleanTSld = wdenoise(fdataTS,9,'NoiseEstimate','LevelDependent');
cleanTSli = wdenoise(fdataTS,9,'NoiseEstimate','LevelIndependent');

Сравните один из шумных временных рядов с двумя деноизированными версиями.

figure
plot(fdataTS.Time,fdataTS.fTS15)
title('Original')
grid on

Figure contains an axes. The axes with title Original contains an object of type line.

figure
plot(cleanTSli.Time,cleanTSli.fTS15)
title('Level Independent')
grid on

Figure contains an axes. The axes with title Level Independent contains an object of type line.

figure
plot(cleanTSld.Time,cleanTSld.fTS15)
title('Level Dependent')
grid on

Figure contains an axes. The axes with title Level Dependent contains an object of type line.

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

свернуть все

Входные данные, заданные как матрица, вектор или расписание действительных значений. Если X является вектором, он должен иметь как минимум две выборки. Если X является матрицей или расписанием, оно должно иметь по крайней мере две строки.

Типы данных: double

Уровень вейвлет, заданный как положительное целое число. LEVEL - положительное целое число, меньше или равное floor(log2N) где N - количество выборок в данных.

  • Если не задано, LEVEL по умолчанию равен минимуму floor(log2N) и wmaxlev(N,'sym4').

  • Для порога блока Джеймса-Штейна, 'BlockJS', должно быть floor(log2N) коэффициенты на самом низком уровне разрешения, LEVEL.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Wavelet','db6','DenoisingMethod','Bayes' осуждает использование Daubechies db6 вейвлет и эмпирический байесовский метод.

Имя вейвлета, заданное как символьный массив, используемое для шумоподавления. Вейвлет должен быть ортогональным или биортогональным. Ортогональные и биортогональные вейвлеты обозначаются как вейвлеты типа 1 и типа 2 соответственно в вейвлет-менеджере. wavemngr.

  • Действительные встроенные ортогональные семейства вейвлет начинаются с haar, dbN, fkN, coifN, или symN где N количество моментов исчезновения для всех семейств, кроме fk. Для fk, N - количество коэффициентов фильтра.

  • Действительные биортогональные семейства вейвлет начинаются с 'biorNr.Nd' или 'rbioNd.Nr', где Nr и Nd количество моментов исчезновения в вейвлет реконструкции (синтеза) и разложения (анализа).

Определите допустимые значения для моментов исчезновения при помощи waveinfo с кратким именем семейства вейвлет. Для примера введите waveinfo('db') или waveinfo('bior'). Использование wavemngr('type',WNAME) чтобы определить, является ли вейвлет ортогональным (возвращает 1) или биортогональным (возвращает 2).

Метод шумоподавления, используемый для определения порогов шумоподавления для данных X.

  • Bayes - Эмпирический Байес

    Этот метод использует правило порога, основанное на предположении, что измерения имеют независимые предшествующие распределения, заданные моделью смеси. Поскольку измерения используются для оценки веса в модели смеси, метод имеет тенденцию работать лучше с большим количеством выборок. По умолчанию апостериорное медианное правило используется для измерения риска [8].

  • BlockJS - Блок Джеймса-Штайна

    Этот способ основан на определении 'оптимального размера и порога блока. Получившаяся оценка порога блока дает одновременно оптимальную глобальную и локальную адаптивность [3].

  • FDR - Ложная частота обнаружения

    Этот метод использует правило порога, основанное на контроле ожидаемого отношения ложноположительных обнаружений ко всем положительным обнаружениям. The FDR способ лучше всего работает с разреженными данными. Выбор коэффициента, или Q -значения, меньше 1/2 приводит к асимптотически минимаксической оценке [1].

  • Minimax - Минимальная оценка

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

  • SURE - Объективная оценка риска Штейна

    Этот метод использует правило выбора порога, основанное на объективной оценке риска Штейна (квадратичная функция потерь). Получают оценку риска для определенного порогового значения (t). Минимизация рисков в (t) дает выбор порогового значения.

  • UniversalThreshold - Универсальный порог 2ln(длина(x)).

    Этот метод использует порог фиксированной формы, дающий минимаксную эффективность, умноженную на небольшой коэффициент, пропорциональный log(length(X)).

Примечание

Для 'FDR', существует необязательный аргумент для Q -значение, который является долей ложных срабатываний. Q является реальным скаляром между 0 и 1/2, 0 < Q <= 1/2. Чтобы задать 'FDR' с Q -значение используйте массив ячеек, где второй элемент является Q -значение. Для примера, 'DenoisingMethod',{'FDR',0.01}. Если не задано, Q по умолчанию равен 0.05.

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

  • 'BlockJS' - Единственная поддерживаемая опция 'James-Stein'. Вам не нужно указывать ThresholdRule для 'BlockJS'.

  • 'SURE', 'Minimax', 'UniversalThreshold' - Допустимые опции 'Soft' или 'Hard'. Значение по умолчанию является 'Soft'.

  • 'Bayes' - Допустимые опции 'Median', 'Mean', 'Soft', или 'Hard'. Значение по умолчанию является 'Median'.

  • 'FDR' - Единственная поддерживаемая опция 'Hard'. Вам не нужно определять ThresholdRule для 'FDR'

СПОСОБ ОЦЕНКИ Отклонения ШУМА В ДАННЫХ.

  • 'LevelIndependent' - Оцените отклонение шума на основе коэффициентов наивысшего разрешения.

  • 'LevelDependent' - Оценить отклонение шума на основе вейвлет-коэффициентов на каждом уровне разрешения.

Определение NoiseEstimate с 'BlockJS' способ шумоподавления не имеет никакого эффекта. Блок оценки Джеймса-Штейна всегда использует 'LevelIndependent' оценка шума.

Выходные аргументы

свернуть все

Деноизмененная векторная, матричная или timetable версия X. Для входа timetable, XDEN имеет те же имена переменных и временные метки, что и исходное расписание.

Типы данных: double

Деноизмененные вейвлет и масштабирующие коэффициенты деноизмененных данных XDEN, возвращается в массив ячеек. Элементы DENOISEDCFS - в порядке уменьшения разрешения. Конечный элемент DENOISEDCFS содержит аппроксимационные (масштабирующие) коэффициенты.

Типы данных: double

Исходные коэффициенты вейвлета и масштабирования X данных, возвращается в массив ячеек. Элементы ORIGCFS - в порядке уменьшения разрешения. Конечный элемент ORIGCFS содержит аппроксимационные (масштабирующие) коэффициенты.

Типы данных: double

Алгоритмы

Наиболее общая модель для сигнала с шумом имеет следующую форму:

s(n)=f(n)+σe(n),

где временные n равномерно разнесены. В самой простой модели предположим, что e (n) является Гауссовским белым шумовым N (0,1), а уровень шума - 1. Шумоподавление цель состоит в том, чтобы подавить шумовую часть s сигнала и восстановить f.

Процедура шумоподавления состоит из трех этапов:

  1. Разложение - выберите вейвлет и выберите уровень N. Вычислите вейвлет разложение сигнала, s на уровне N.

  2. Пороговое значение коэффициентов детализации - Для каждого уровня от 1 до Nвыберите порог и примените мягкое пороговое значение к коэффициентам детализации.

  3. Реконструкция - Вычисление реконструкции вейвлета на основе исходных коэффициентов приближения уровневых N и измененные коэффициенты детализации уровней от 1 до N.

Более подробная информация о правилах выбора порогов содержится в Denoising Wavelet и непараметрической оценке функции и в помощи thselect функция.

Ссылки

[1] Абрамович, Ф., Я. Бенджамини, Д. Л. Донохо, и И. М. Джонстон. «Адаптация к неизвестной разреженности путем управления частотой ложного обнаружения». Annals of Statistics, Vol. 34, Number 2, pp. 584-653, 2006.

[2] Antoniadis, A., and G. Oppenheim, eds. Вейвлеты и статистика. Лекции по статистике. Нью-Йорк: Springer Verlag, 1995.

[3] Cai, T. T. «On Block Thresholding in Wavelet Regression: Adaptivity, Block Size и Threshold Level». Statistica Sinica, Vol. 12, pp. 1241-1273, 2002.

[4] Donoho, D. L. «Progress in Wavelet Analysis and WVD: A Ten Minute Tour». Прогресс в области Wavelet Analysis and Applications (Y. Meyer, and S. Roques, eds.). Gif-sur-Yvette: Editions Frontiéres, 1993.

[5] Donoho, D. L., I. M. Johnstone. Идеальная пространственная адаптация методом усадки вейвлет. Биометрика, том 81, стр. 425-455, 1994.

[6] Donoho, D. L. «De-noising by Soft-Thresholding». Транзакции IEEE по теории информации, том 42, № 3, стр. 613-627, 1995.

[7] Donoho, D. L., I. M. Johnstone, G. Kerkyacharian, and D. Picard. «Усадка вейвлет: асимптопия?» Журнал Королевского статистического общества, серия B, том 57, № 2, стр. 301 - 369, 1995.

[8] Джонстон, И. М. и Б. У. Сильверман. «Иглы и солома в стогах сена: эмпирические оценки Байеса возможных разреженных последовательностей». Анналы статистики, том 32, № 4, стр. 1594 - 1649, 2004.

Расширенные возможности

..
Введенный в R2017b