mlpt

Многомасштабное локальное 1-D полиномиальное преобразование

Описание

пример

[coefs,T,coefsPerLevel,scalingMoments] = mlpt(x,t) возвращает многомерное локальное полиномиальное 1-D преобразование (MLPT) входного сигнала x дискретизированный в моменты дискретизации, t. Если x или t содержат NaNs, объединение NaNs в x и t удаляется перед получением mlpt.

пример

[coefs,T,coefsPerLevel,scalingMoments] = mlpt(x,t,numLevel) возвращает преобразование для numLevel уровни разрешения.

пример

[coefs,T,coefsPerLevel,scalingMoments] = mlpt(x) использует равномерные моменты дискретизации для x как момент времени, если x не содержит NaNс. Если x содержит NaNs, the NaNs удаляются из x и неоднородные моменты дискретизации получаются из числовых элементов x.

пример

[coefs,T,coefsPerLevel,scalingMoments] = mlpt(___,Name,Value) определяет mlpt свойства с использованием одного или нескольких Name,Value парные аргументы и любой из предыдущих входных параметров.

Примеры

свернуть все

Создайте сигнал с неоднородной дискретизацией и проверьте хорошую реконструкцию при выполнении mlpt и imlpt.

Создайте и постройте график синусоиды с неоднородной выборкой.

timeVector = 0:0.01:1;
sineWave = sin(2*pi*timeVector)';

samplesToErase = randi(100,100,1);
sineWave(samplesToErase) = [];
timeVector(samplesToErase) = [];

figure(1)
plot(timeVector,sineWave,'o')
hold on

Figure contains an axes. The axes contains an object of type line.

Выполните многомасштабное локальное 1-D полиномиальное преобразование (mlpt) по сигналу. Визуализируйте коэффициенты.

[coefs,T,coefsPerLevel,scalingMoments] = mlpt(sineWave,timeVector);

figure(2)
stem(coefs)
title('Wavelet Coefficients')

Figure contains an axes. The axes with title Wavelet Coefficients contains an object of type stem.

Выполните обратное многомасштабное локальное 1-D полиномиальное преобразование (imlpt) о коэффициентах. Визуализируйте восстановленный сигнал.

y = imlpt(coefs,T,coefsPerLevel,scalingMoments);

figure(1)
plot(T,y,'*')
legend('Original Signal','Reconstructed Signal')
hold off

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

Посмотрите на общую ошибку, чтобы проверить хорошую реконструкцию.

reconstructionError = sum(abs(y-sineWave))
reconstructionError = 2.8383e-15

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

Создайте входной сигнал и визуализируйте его.

T = (1:16)';
x = T.^2;
plot(x)
hold on

Figure contains an axes. The axes contains an object of type line.

Выполните прямое и обратное преобразования для входного сигнала, используя двойные моменты по умолчанию и не по умолчанию.

[w2,t2,nj2,scalingmoments2] = mlpt(x,T);
y2 = imlpt(w2,t2,nj2,scalingmoments2);

[w3,t3,nj3,scalingmoments3] = mlpt(x,T,'dualmoments',3);
y3 = imlpt(w3,t3,nj3,scalingmoments3,'dualmoments',3);

Постройте график восстановленного сигнала и проверьте идеальную реконструкцию, используя двойной момент по умолчанию и не по умолчанию.

plot(y2,'o')
plot(y3,'*')
legend('Original Signal', ...
       'DualMoments = 3', ...
       'DualMoments = 2 (Default)');

fprintf('\nMean Reconstruction Error:\n');
Mean Reconstruction Error:
fprintf('  - Nondefault dual moments: %0.2f\n',mean(abs(y3-x)));
  - Nondefault dual moments: 0.00
fprintf('  - Default dual moments: %0.2f\n\n',mean(abs(y2-x)));
  - Default dual moments: 0.00
hold off

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Original Signal, DualMoments = 3, DualMoments = 2 (Default).

Уровни разрешения являются количеством каскадных локальных операций сглаживания полинома. Детали на каждом уровне разрешения получаются путем предсказания одной половины выборок на основе локальной полиномиальной интерполяции другой половины. Различия между предсказанным и фактическим значениями являются деталями на каждом уровне разрешения. Коэффициенты масштабирования на каждом более крупном уровне разрешения являются более плавными версиями коэффициентов масштабирования с более высоким разрешением. Сохраняются только коэффициенты масштабирования конечного уровня.

Увеличение количества уровней разрешения позволяет вам анализировать узкополосные коэффициенты для вычислительной стоимости и стоимости памяти.

Создайте двухтоновый входной сигнал, x, который содержит высокие и низкие частоты.

fs = 1000;
t = (0:1/fs:10)';
x = sin(499*pi.*t) + sin(2*pi.*t);

Использование mlpt получение коэффициентов для минимального и максимального уровней разрешения. Печать расчета времени.

tic
[w1,~,nj1,m1] = mlpt(x,t,1);
computationTime1 = toc;
fprintf('Level one computation time: %0.2f\n',computationTime1)
Level one computation time: 4.35
tic
[w13,~,nj13,m13] = mlpt(x,t,13);
computationTime13 = toc;
fprintf('Level thirteen computation time: %0.2f\n',computationTime13)
Level thirteen computation time: 5.80

Если ваши моменты времени не известны или не указаны, можно вычислить MLPT с помощью моментов времени по умолчанию.

Загрузка сигнала данных, поврежденного NaNs и неизвестными моментами времени. Вычислите MLPT, не задавая моменты времени. Получившийся подразумеваемый момент времени является вектором допустимых индексов поврежденного сигнала.

load('CorruptedData.mat');

[w,t,nj,scalingMoments] = mlpt(yCorrupt);

Вычислите обратный MLPT и визуализируйте результаты. Повторно вставьте NaNs, чтобы визуализировать погрешности в сигнале.

z = imlpt(w,t,nj,scalingMoments);

zToPlot = NaN(numel(yCorrupt),1);
zToPlot(t) = z;

plot(yCorrupt,'k','LineWidth',2.5)
hold on
plot(zToPlot,'c','LineWidth',1)
hold off
legend('Original Signal','Reconstructed Signal')
xlabel('Time Instants')

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

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

свернуть все

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

  • матрица - 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)))

Если numLevel не задан, mlpt использует максимальное значение.

Типы данных: 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' [1], 'UnbalancedHaar', или 'None'.

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

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

свернуть все

Коэффициенты MLPT, возвращаемые как вектор или матрица коэффициентов, в зависимости от уровня, до которого вычисляется преобразование. coefs содержит приближения и детализации.

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

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

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

Коэффициенты на уровень разрешения, возвращаемые как вектор, содержащий количество коэффициентов на каждом уровне разрешения в coefs. Элементы coefsPerLevel организованы следующим образом:

  • coefsPerLevel(1) - Количество коэффициентов приближения на самом грубом уровне разрешения.

  • coefsPerLevel(i) - Количество коэффициентов детализации на уровне разрешения i, где i = numLevel – i + 2 для i = 2, ..., numLevel + 1.

Чем меньше индекс i, чем меньше разрешение. MLPT в два раза избыточен в количестве коэффициентов детализации, но не в количестве коэффициентов приближения.

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

Масштабирование функциональных моментов, возвращаемое как length(coefs)-by- P матрица, где P - количество основных моментов, заданное PrimalMoments Пара "имя-значение".

Типы данных: 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