wden

Автоматическое 1D шумоподавление

wden больше не рекомендуется. Используйте wdenoise вместо этого.

Синтаксис

XD = wden(X,TPTR,SORH,SCAL,N,wname)
XD = wden(C,L,___)
XD = wden(W,'modwtsqtwolog',SORH,'mln',N,wname)
[XD,CXD] = wden(___)
[XD,CXD,LXD] = wden(___)
[XD,CXD,LXD,THR] = wden(___)
[XD,CXD,THR] = wden(___)

Описание

пример

XD = wden(X,TPTR,SORH,SCAL,N,wname) возвращает denoised версию XD X сигнала. Функция использует N - разложение вейвлета уровня X с помощью заданного ортогонального или биоортогонального вейвлета wname, чтобы получить коэффициенты вейвлета. Выбор пороговой обработки постановляет, что TPTR применяется к разложению вейвлета. SORH и SCAL задают, как правило применяется.

XD = wden(C,L,___) возвращает denoised версию XD X сигнала с помощью тех же опций в качестве в предыдущем синтаксисе, но полученный непосредственно из структуры разложения вейвлета [C, L] X. [C, L] является вывод wavedec.

XD = wden(W,'modwtsqtwolog',SORH,'mln',N,wname) возвращается denoised сигнализируют о XD, полученном путем работы на матрице максимального перекрытия дискретного вейвлета преобразовывает (MODWT) W, где W является вывод modwt. Необходимо использовать тот же ортогональный вейвлет и в modwt и в wden.

[XD,CXD] = wden(___) возвращает denoised коэффициенты вейвлета. Для шумоподавления дискретного вейвлета преобразовывает (DWT) CXD является вектором (см. wavedec). Для шумоподавления MODWT CXD является матрицей с N +1 строка (см. modwt). Количество столбцов CXD равно длине входного сигнала X.

[XD,CXD,LXD] = wden(___) возвращает количество коэффициентов уровнем для шумоподавления DWT. Смотрите wavedec для деталей. LXD вывод не поддержан для шумоподавления MODWT. Дополнительные выходные аргументы [CXD,LXD] является структурой разложения вейвлета (см. wavedec для получения дополнительной информации) denoised сигнализируют о XD.

[XD,CXD,LXD,THR] = wden(___) возвращает пороги шумоподавления уровнем для шумоподавления DWT.

[XD,CXD,THR] = wden(___) возвращает пороги шумоподавления уровнем для шумоподавления MODWT, когда вы задаете входной параметр 'modwtsqtwolog'.

Примеры

свернуть все

Этот пример показывает, как применить три различных метода шумоподавления к сигналу с шумом. Это сравнивает результаты с графиками и пороговыми значениями, произведенными каждым методом.

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

rng('default')

Создайте сигнал, состоящий из синусоиды на 2 Гц с переходными процессами в 0,3 и 0,72 секунды. Добавьте случайным образом сгенерированный шум в сигнал и постройте результат.

N = 1000;
t = linspace(0,1,N);
x = 4*sin(4*pi*t);
x = x - sign(t-0.3) - sign(0.72-t);
sig = x + 0.5*randn(size(t));
plot(t,sig)
title('Signal')
grid on

Используя вейвлет sym8, выполните разложение вейвлета уровня 5 сигнала и denoise это путем применения трех различных пороговых правил выбора к коэффициентам вейвлета: НЕСОМНЕННО, минимакс и универсальный порог Донохо и Джонстона с зависимой уровнем оценкой шума. В каждом случае примените трудную пороговую обработку.

lev = 5;
wname = 'sym8';
[dnsig1,c1,l1,threshold_SURE] = wden(sig,'rigrsure','h','mln',lev,wname);
[dnsig2,c2,l2,threshold_Minimax] = wden(sig,'minimaxi','h','mln',lev,wname);
[dnsig3,c3,l3,threshold_DJ] = wden(sig,'sqtwolog','h','mln',lev,wname);

Постройте и сравните три сигнала denoised.

subplot(3,1,1)
plot(t,dnsig1)
title('Denoised Signal - SURE')
grid on
subplot(3,1,2)
plot(t,dnsig2)
title('Denoised Signal - Minimax')
grid on
subplot(3,1,3)
plot(t,dnsig3)
title('Denoised Signal - Donoho-Johnstone')
grid on

Сравните пороги, примененные на каждом уровне детализации для трех методов шумоподавления.

threshold_SURE
threshold_SURE = 1×5

    0.9592    0.6114    1.4734    0.7628    0.4360

threshold_Minimax
threshold_Minimax = 1×5

    1.1047    1.0375    1.3229    1.1245    1.0483

threshold_DJ
threshold_DJ = 1×5

    1.8466    1.7344    2.2114    1.8798    1.7524

Этот пример denoises сигнал с помощью DWT и MODWT. Это сравнивает результаты с графиками и пороговыми значениями, произведенными каждым методом.

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

rng('default')

Создайте сигнал, состоящий из синусоиды на 2 Гц с переходными процессами в 0,3 и 0,72 секунды. Добавьте случайным образом сгенерированный шум в сигнал и постройте результат.

N = 1000;
t = linspace(0,1,N);
x = 4*sin(4*pi*t);
x = x - sign(t-0.3) - sign(0.72-t);
sig = x + 0.5*randn(size(t));
plot(t,sig)
title('Signal')
grid on

Используя вейвлет db2, выполните разложение вейвлета уровня 3 сигнала и denoise это с помощью универсального порога Донохо и Джонстона с зависимой уровнем оценкой шума. Получите denoised версии с помощью DWT и MODWT, обоих с мягкой пороговой обработкой.

wname = 'db2';
lev = 3;
[xdDWT,c1,l1,threshold_DWT] = wden(sig,'sqtwolog','s','mln',lev,wname);
[xdMODWT,c2,threshold_MODWT] = wden(sig,'modwtsqtwolog','s','mln',lev,wname);

Постройте и сравните результаты.

subplot(2,1,1)
plot(t,xdDWT)
grid on
title('DWT Denoising')
subplot(2,1,2)
plot(t,xdMODWT)
grid on
title('MODWT Denoising')

Сравните пороги, примененные в каждом случае.

threshold_DWT
threshold_DWT = 1×3

    1.7783    1.6876    2.0434

threshold_MODWT
threshold_MODWT = 1×3

    1.2760    0.6405    0.3787

Этот пример denoises массивный сигнал с помощью вейвлета Хаара с DWT и шумоподавлением MODWT. Это сравнивает результаты с графиками и метриками для исходных и denoised версий.

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

rng('default')

Сгенерируйте сигнал и шумную версию с квадратным корнем из отношения сигнал-шум, равного 3. Постройте и сравните каждого.

[osig,nsig] = wnoise('blocks',10,3);
plot(nsig,'r')
hold on
plot(osig,'b')
legend('Noisy Signal','Original Signal')

Используя вейвлет Хаара, выполните разложение вейвлета уровня 6 сигнала с шумом и denoise это с помощью универсального порога Донохо и Джонстона с зависимой уровнем оценкой шума. Получите denoised версии с помощью DWT и MODWT, обоих с мягкой пороговой обработкой.

wname = 'haar';
lev = 6 ;
[xdDWT,c1,l1] = wden(nsig,'sqtwolog','s','mln',lev,wname);
[xdMODWT,c2] = wden(nsig,'modwtsqtwolog','s','mln',lev,wname);

Постройте и сравните исходную, бесшумную версию сигнала с двумя denoised версиями.

figure
plot(osig,'b')
hold on
plot(xdDWT,'r--')
plot(xdMODWT,'k-.')
legend('Original','DWT','MODWT')
hold off

Вычислите L2 и L-нормы-бесконечности различия между исходным сигналом и двумя denoised версиями.

L2norm_original_DWT = norm(abs(osig-xdDWT),2)
L2norm_original_DWT = 36.1194
L2norm_original_MODWT = norm(abs(osig-xdMODWT),2)
L2norm_original_MODWT = 14.5987
LInfinity_original_DWT = norm(abs(osig-xdDWT),Inf)
LInfinity_original_DWT = 4.7181
LInfinity_original_MODWT = norm(abs(osig-xdMODWT),Inf)
LInfinity_original_MODWT = 2.9655

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

свернуть все

Входные данные к denoise, заданному как вектор с действительным знаком.

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

Коэффициенты расширения вейвлета данных, чтобы быть denoised, заданным как вектор с действительным знаком. C является вывод wavedec.

Пример: [C,L] = wavedec(randn(1,1024),3,'db4')

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

Размер коэффициентов расширения вейвлета сигнала быть denoised, заданным как вектор положительных целых чисел. L является вывод wavedec.

Пример: [C,L] = wavedec(randn(1,1024),3,'db4')

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

Максимальная структура разложения вейвлета перекрытия сигнала к denoise, заданному как матрица с действительным знаком. W является вывод modwt. Необходимо использовать тот же ортогональный вейвлет и в modwt и в wden.

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

Пороговый выбор управляет, чтобы примениться к структуре разложения вейвлета X:

  • 'rigsure' — Используйте принцип Несмещенного Риска Глиняной кружки.

  • 'heursure' — Используйте эвристический вариант Несмещенного Риска Глиняной кружки.

  • 'sqtwolog — Используйте универсальный порог 2ln(длина(x)).

  • 'minimaxi' — Используйте минимаксную пороговую обработку. (См. thselect для получения дополнительной информации.)

Тип пороговой обработки, чтобы выполнить:

  • S Мягкая пороговая обработка

  • H Трудная пороговая обработка

Мультипликативное пороговое перемасштабирование:

  • 'one' — Никакое перемасштабирование

  • 'sln' — Перемасштабирование использования одной оценки шума уровня на основе коэффициентов первого уровня

  • 'mln' — Перемасштабирование использования зависимой уровнем оценки шума уровня

Уровень разложения вейвлета, заданного как положительное целое число. Используйте wmaxlev, чтобы гарантировать, что коэффициенты вейвлета свободны от граничных эффектов. Если граничные эффекты не являются беспокойством в вашем приложении, хорошее правило состоит в том, чтобы установить N, меньше чем или равный fix(log2(length(X))).

Имя вейвлета, заданного как символьный массив, чтобы использовать для шумоподавления. Для шумоподавления DWT вейвлет должен быть ортогональным или биоортогональным. Для шумоподавления MODWT вейвлет должен быть ортогональным. Ортогональные и биоортогональные вейвлеты определяются как тип 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).

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

свернуть все

Данные Denoised, возвращенные как вектор с действительным знаком.

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

Коэффициенты вейвлета Denoised, возвращенные как вектор с действительным знаком или матрица. Для шумоподавления DWT CXD является вектором (см. wavedec). Для шумоподавления MODWT CXD является матрицей со строками N+1 (см. modwt). Количество столбцов равно длине входного сигнала X.

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

Размер denoised коэффициентов вейвлета уровнем для шумоподавления DWT, возвращенного как вектор положительных целых чисел (см. wavedec). LXD вывод не поддержан для шумоподавления MODWT. [CXD,LXD] является структурой разложения вейвлета сигнала denoised XD.

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

Пороги шумоподавления уровнем, возвращенным как длина N вектор с действительным знаком.

Типы данных: 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.

Больше деталей о пороговых правилах выбора находится в Шумоподавлении Вейвлета и Непараметрической Функциональной Оценке и в справке функции thselect. Обратите внимание на то, что:

  • Содействующий вектор детали является суперпозицией коэффициентов f и коэффициентов e. Разложение e ведет, чтобы детализировать коэффициенты, которые являются стандартными Гауссовыми белыми шумами.

  • Минимакс и пороговые правила выбора SURE более консервативны и более удобны, когда маленькие детали функционального f находятся в шумовом диапазоне. Два других правила удаляют шум более эффективно. Опция 'heursure' является компромиссом.

На практике базовая модель не может использоваться непосредственно. Чтобы иметь дело с образцовыми отклонениями, остающийся параметр, scal должен быть задан. Это соответствует пороговым методам перемасштабирования.

  • Опция scal = 'one' соответствует базовой модели.

  • Опция scal = 'sln' обрабатывает пороговое перемасштабирование с помощью одной оценки шума уровня на основе коэффициентов первого уровня.

    В целом можно проигнорировать уровень шума, который должен быть оценен. Коэффициенты детали CD 1 (самая прекрасная шкала) являются чрезвычайно шумовыми коэффициентами со стандартным отклонением, равным σ. Среднее абсолютное отклонение коэффициентов является устойчивой оценкой σ. Использование устойчивой оценки крайне важно. Если коэффициенты уровня 1 содержат детали f, эти детали сконцентрированы в нескольких коэффициентах, чтобы избежать эффектов конца сигнала, которые являются чистыми артефактами из-за вычислений на ребрах.

  • Опция scal = 'mln' обрабатывает пороговое перемасштабирование с помощью зависимой уровнем оценки шума уровня.

    Когда вы подозреваете цветной шумовой e, пороги должны повторно масштабироваться зависимой уровнем оценкой шума уровня. Тот же вид стратегии используется путем оценки σlev уровня уровнем. Эта оценка реализована в файле wnoisest, который обрабатывает структуру разложения вейвлета исходного s сигнала непосредственно.

Ссылки

[1] Antoniadis, A., и Г. Оппенхейм, вейвлеты редакторов и Статистика, 103. Читайте лекции Примечаниям в Статистике. Нью-Йорк: Springer Verlag, 1995.

[2] Donoho, D. L. “Прогресс Анализа Вейвлета и WVD: Десятиминутный Тур”. Прогресс Анализа Вейвлета и Приложений (И. Мейер, и. Рок, редакторы). Джиф-сур-Иветт: Выпуски Frontières, 1993.

[3] Donoho, D. L. и Джонстон, я. M. “Идеальная Пространственная Адаптация Уменьшением Вейвлета”. Biometrika, Издание 81, стр 425–455, 1994.

[4] Donoho, D. L. “Шумоподавление Мягкой Пороговой обработкой”. Транзакции IEEE на Теории информации, Издании 42, Номере 3, стр 613–627, 1995.

[5] Donoho, D. L. i. М. Джонстон, Г. Керкьячариэн и Д. Пикар. “Уменьшение вейвлета: Asymptopia?” Журнал Королевского Статистического Общества, серий B. Издание 57, Номер 2, стр 301–369, 1995.

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

Смотрите также

Функции

Приложения

Представлено до R2006a