exponenta event banner

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 не содержит NaNs. Если x содержит NaNs, 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)около-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