mlptdenoise

Сигнал Denoise использование многошкального локального 1D полиномиального преобразования

Описание

пример

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

пример

y = mlptdenoise(x,t,numLevel) denoises x вниз к numLevel.

пример

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

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

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

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

Примеры

свернуть все

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

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

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

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

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

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

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

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

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

load('InputSamples.mat')

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

Используйте mlptdenoise к denoise поврежденный сигнал. Визуально сравните поврежденный и сигналы denoised против исходного сигнала.

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

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

Сравните сигналы ошибки, сопоставленные с поврежденным сигналом и сигналом 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

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

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

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

Denoise сигнал к уровням один, два, и пять.

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

Визуализируйте эффект level на сигнале denoised.

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')

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

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

Denoise неоднородно выбранный сигнал с помощью несмещенного метода риска Стайна. Возвратите сигнал denoised, связанные моменты времени, порог коэффициенты MLPT и исходные коэффициенты MLPT. Постройте сигналы denoised и оригинал.

load nonuniformheavisine;

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

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

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

plot([wOriginal,wThrolded])
legend('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 denoises 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 операция в виде разделенной запятой пары, состоящей of'Prefilter' и 'Haar' или 'UnbalancedHaar'. Если никакой предварительный фильтр не задан, 'Haar' используется по умолчанию.

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

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

Примечание

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

Алгоритмы

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

Ссылки

[1] Янсен, M. "Многошкальное Локальное Сглаживание Полинома в Снятой Пирамиде для Неравномерно расположенных Данных". Транзакции IEEE на Обработке сигналов, Издании 61, Номере 3, 2013, стр 545–555.

[2] Янсен, M. и М. Амгэр. "Многошкальные локальные полиномиальные разложения с помощью пропускной способности в качестве шкал". Статистика и Вычисление (предстоящего). 2016.

[3] Янсен, M. и Патрик Унинккс. Вейвлеты второго поколения и приложения. Лондон: Спрингер, 2005.

Введенный в R2017a