mlptdenoise

Денуазный сигнал с использованием многомерного локального 1-D полиномиального преобразования

Описание

пример

y = mlptdenoise(x,t) возвращает деноизированную версию входного сигнала x дискретизированный в моменты дискретизации, t. Если x или t содержат NaNs, объединение NaNs в x и t удаляется перед получением mlpt.

пример

y = mlptdenoise(x,t,numLevel) осуждает x вплоть до numLevel.

пример

y = mlptdenoise(___,Name,Value) определяет mlpt свойства с использованием одного или нескольких Name,Value аргументы в виде пар и любой из предыдущих синтаксисов

[y,T] = mlptdenoise(___) также возвращает моменты времени для деноизированного сигнала.

[y,T,thresholdedCoefs] = mlptdenoise(___) также возвращает пороговые многомасштабные коэффициенты локального 1-D полиномиального преобразования.

[y,T,thresholdedCoefs,originalCoefs] = mlptdenoise(___) также возвращает исходные многомасштабные коэффициенты локального 1-D полиномиального преобразования.

Примеры

свернуть все

Денуризируйте неоднородно дискретизированный сплайн с добавленным шумом с помощью медианного сглаживания и двух основных моментов исчезновения. Неоднородность сигнала обозначается NaNs (отсутствующие данные).

Загрузите данные в рабочую область и визуализируйте их.

load nonuniformspline
plot(splinenoise)
grid on
title('Noisy Signal with Missing Data')

Figure contains an axes. The axes with title Noisy Signal with Missing Data contains an object of type line.

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

xden = mlptdenoise(splinenoise,[],'DenoisingMethod','median');

Замените исходные отсутствующие данные в правильном положении для построения графического изображения. Визуализация исходных и деноизированных сигналов.

denoisedsig = NaN(size(splinenoise));
denoisedsig(~isnan(splinenoise)) = xden;
figure
plot([splinesig denoisedsig])
grid on
legend('Original Signal','Denoised Signal');

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

Уменьшите шум сигнала с помощью многомерного локального полиномиального преобразования (MLPT).

Загрузите сигнал чистой синусоиды с равномерной дискретизацией и поврежденной версией сигнала.

load('InputSamples.mat')

plot(t,x)
hold on
plot(tCorrupt,xCorrupt)
legend('Original','Corrupted')

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

Использование mlptdenoise для обесценивания поврежденного сигнала. Визуально сравните поврежденные и деноизированные сигналы с исходным сигналом.

[xDenoised,tDenoised] = mlptdenoise(xCorrupt,tCorrupt);

plot(tDenoised,xDenoised,'b')
hold off
legend('Original','Corrupted','Denoised')

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

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

x(samplesToErase) = [];
xCorrupt(samplesToErase) = [];

xCorruptError = abs(diff([x,xCorrupt],[],2));
yError = abs(diff([x,xDenoised],[],2));

plot(tDenoised,xCorruptError)
hold on
plot(tDenoised,yError)
title('Error Signals')
legend('Corrupted','Denoised')
hold off

Figure contains an axes. The axes with title Error Signals contains 2 objects of type line. These objects represent Corrupted, Denoised.

По умолчанию mlptdenoise деноидирует сигнал, основанный на двух коэффициентах детализации самого высокого уровня. В этом примере вы обесцениваете сигнал на разных уровнях и визуализируете эффект.

Создайте многотоновый сигнал.

fs = 1000;
t = 0:1/fs:1;
x = sin(4*pi*t) + sin(120*pi*t) + sin(480*pi*t);

Обнулите сигнал до уровней один, два и пять.

y1 = mlptdenoise(x,t,1);
y2 = mlptdenoise(x,t,2);
y5 = mlptdenoise(x,t,5);

Визуализируйте эффект level по деноизированному сигналу.

subplot(4,1,1)
plot(t,x)
title('Original Signal')

subplot(4,1,2)
plot(t,y1)
title('Denoised Signal, Level = 1')

subplot(4,1,3)
plot(t,y2)
title('Denoised Signal, Level = 2')

subplot(4,1,4)
plot(t,y5)
title('Denoised Signal, Level = 5')

Figure contains 4 axes. Axes 1 with title Original Signal contains an object of type line. Axes 2 with title Denoised Signal, Level = 1 contains an object of type line. Axes 3 with title Denoised Signal, Level = 2 contains an object of type line. Axes 4 with title Denoised Signal, Level = 5 contains an object of type line.

The mlptdenoise функция выполняет прямой MLPT, порождает коэффициенты как задано в 'DenoisingMethod' Пара "имя-значение". Затем mlptdenoise выполняет обратный MLPT, чтобы вернуть деноидированный сигнал в области вашего исходного сигнала.

При необходимости можно вернуть пороговые и исходные коэффициенты для контроля и анализа.

Денуазируйте неоднородно дискретизированный сигнал, используя объективный метод риска Штейна. Возвращает деноизированный сигнал, связанные моменты времени, пороговые коэффициенты MLPT и исходные коэффициенты MLPT. Постройте график исходных и деноизированных сигналов.

load nonuniformheavisine;

[xDenoised,t,wThrolded,wOriginal] = mlptdenoise(x,t,3,'denoisingmethod','SURE');

plot(t,[f,xDenoised])
legend('Original signal','Denoised signal')

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

Постройте график исходных коэффициентов MLPT и пороговых коэффициентов MLPT для сравнения.

plot([wOriginal,wThrolded])
legend('Original coefficients','Thresholded coefficients')

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

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

свернуть все

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

  • матрица - x должно иметь не менее двух строк. mlpt действует независимо на каждом столбце x. Количество элементов в t должен равняться размерности строки x. Любой NaNs в столбцах x должно находиться в тех же строках.

  • вектор - x и t должно иметь одинаковое количество элементов.

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

Моменты дискретизации, соответствующие входному сигналу, заданные как вектор, duration массив, или datetime массив монотонно увеличивающихся вещественных значений. Значение по умолчанию зависит от длины входного сигнала, x.

Типы данных: double | duration | datetime

Количество уровней разрешения, заданное в виде положительного целого числа. Максимальное значение numLevel зависит от формы входного сигнала, x:

  • матрица - floor(log2(size(x,1)))

  • вектор - floor(log2(length(x)))

mlptdenoise осуждает x путем порога всех коэффициентов детализации MLPT, рассчитанных для numLevel уровни разрешения.

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

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

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

Пример: 'DualMoments',3 вычисляет преобразование с использованием трех двойных моментов исчезновения.

Количество двойных моментов исчезновения в схеме подъема, заданное как разделенная разделенными запятой парами, состоящая из 'DualMoments' и 2, 3 или 4.

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

Количество основных моментов исчезновения в схеме подъема, заданное как разделенная разделенными запятой парами, состоящая из 'PrimalMoments' и 2, 3, или 4.

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

Предварительный фильтр перед mlpt операция, заданная как разделенная разделенными запятой парами, состоящая из 'Prefilter' и 'Haar' или 'UnbalancedHaar'. Если предварительный фильтр не задан, 'Haar' используется по умолчанию.

Типы данных: char | string

Метод шумоподавления, примененный к коэффициентам детализации MLPT, заданный как разделенная разделенными запятой парами, состоящая из 'DenoisingMethod' и 'Bayesian', 'Median', 'SURE', или 'FDR'.

Примечание

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

Типы данных: char | string

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

свернуть все

Деноизмененная версия входного сигнала, возвращенная в виде вектора или матрицы. Размер y зависит от размера x и объединение NaNs в x и t.

По умолчанию, mlpt деноизируется на основе двух коэффициентов детализации наивысшего разрешения, если только x имеет менее четырех выборки. Если x имеет менее четырех выборки, mlpt деноизируется только на основе коэффициентов детализации с самым высоким разрешением.

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

Моменты дискретизации, соответствующие выходу, возвращаются как вектор или duration массив, полученный из x и входной t. Если вход t является datetime или duration массив, t преобразуется в модули, которые позволяют стабильно mlpt и implt расчет. Затем T возвращается как duration массив.

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

Пороговые коэффициенты MLPT, возвращенные в виде вектора или матрицы. Размер thresholdedCoefs зависит от размера x и уровень, до которого вычисляется преобразование.

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

Исходные коэффициенты MLPT, возвращенные в виде вектора или матрицы. Размер originalCoefs зависит от размера x и уровень, до которого вычисляется преобразование.

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

Алгоритмы

Маартен Янсен разработал теоретическую основу многомасштабного локального полиномиального преобразования (MLPT) и алгоритмы его эффективного расчета [1][2][3]. MLPT использует схему подъема, в которой функция ядра сглаживает мелкомасштабные коэффициенты с заданной шириной полосы для получения более грубых коэффициентов разрешения. mlpt функция использует только локальную полиномиальную интерполяцию, но метод, разработанный Янсеном, является более общим и допускает многие другие типы ядра с регулируемыми полосами [2].

Ссылки

[1] Янсен, Маартен. Многомасштабное локальное полиномиальное сглаживание в поднятой пирамиде для неравновесных данных. Транзакции IEEE по обработке сигналов 61, № 3 (февраль 2013): 545-55. https://doi.org/10.1109/TSP.2012.2225059.

[2] Янсен, Маартен и Мохамед Амгар. «Многомасштабное локальное полиномиальное разложение с использованием пропускной способности в качестве шкал». Статистика и вычисления 27, № 5 (сентябрь 2017): 1383-99. https://doi.org/10.1007/s11222-016-9692-8.

[3] Янсен, Маартен и Патрик Онинкс. Вейвлеты и приложения второй генерации. Лондон; Нью-Йорк: Спрингер, 2005.

Введенный в R2017a