wden

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

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

Описание

пример

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

XD = wden(C,L,___) возвращает denoised версию XD из X сигнала использование тех же опций как в предыдущем синтаксисе, но полученный непосредственно из структуры разложения вейвлета [CL] из XCL] выход 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. Для fkN количество коэффициентов фильтра.

  • Допустимые биоортогональные семейства вейвлетов начинают с '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