exponenta event banner

mlptdenoise

Сигнал Denoise, используя многомасштабное местное отделение 1-d многочленное преобразование

Описание

пример

y = mlptdenoise(x,t) возвращает деноизированную версию входного сигнала 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(___) также возвращает моменты времени для денонсированного сигнала.

[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);

Денуазировать сигнал до уровней 1, 2 и 5.

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.

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 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 операция, указанная как разделенная запятыми пара, состоящая из'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