imlpt

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

Синтаксис

y = imlpt(coefs,T,coefsPerLevel,scalingMoments)
y = imlpt(___,Name,Value)

Описание

пример

y = imlpt(coefs,T,coefsPerLevel,scalingMoments) возвращает обратное многошкальное локальное полиномиальное 1D преобразование (MLPT) coefs. Входными параметрами к imlpt должны быть выходные параметры mlpt.

пример

y = imlpt(___,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

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

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

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

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

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

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

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

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

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

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

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

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

[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

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

свернуть все

Коэффициенты MLPT, заданные как вектор или матрица коэффициентов MLPT, возвращенных функцией mlpt.

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

Выборка моментов, соответствуя y, заданному как вектор или массив duration увеличения значений, возвращенных функцией mlpt.

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

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

Элементы coefsPerLevel организованы можно следующим образом:

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

  • coefsPerLevel(i) — Количество коэффициентов детали на уровне разрешения i, где i = numLevel – i + 2 для i = 2, ..., numLevel + 1. numLevel является количеством уровней разрешения, используемых, чтобы вычислить MLPT. numLevel выведен из coefsPerLevel: numLevel = length(coefsPerLevel-1).

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

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

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

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'DualMoments',3 вычисляет преобразование с помощью трех двойных исчезающих моментов.

Номер двойных исчезающих моментов в поднимающейся схеме, заданной как пара, разделенная запятой, состоящая из 'DualMoments' и 2, 3 или 4. Номер двойных моментов должен совпадать с номером, используемым mlpt.

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

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

свернуть все

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

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

Алгоритмы

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

Ссылки

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

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

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

Введенный в R2017a

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