mlptdenoise

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

Синтаксис

y = mlptdenoise(x,t)
y = mlptdenoise(x,t,numLevel)
y = mlptdenoise(___,Name,Value)
[y,T] = mlptdenoise(___)
[y,T,thresholdedCoefs] = mlptdenoise(___)
[y,T,thresholdedCoefs,originalCoefs] = mlptdenoise(___)

Описание

пример

y = mlptdenoise(x,t) возвращает denoised версию входного сигнала x, выбранный в моменты выборки, t. Если x или t содержат NaN s, объединение NaN s в 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(fullfile(matlabroot,'examples','wavelet','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. Любой NaN s в столбцах 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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', 'Median', 'SURE' или 'FDR'.

Примечание

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

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

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

свернуть все

Версия Denoised входного сигнала, возвращенного как вектор или матрица. Размер y зависит от размера x и объединения NaN s в 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

Для просмотра документации необходимо авторизоваться на сайте