mlptrecon

Восстановите сигнал с помощью обратного многошкального локального 1D полиномиального преобразования

Описание

пример

y = mlptrecon(type,coefs,T,coefsPerLevel,scalingMoments,reconstructionLevel) возвращает приближение в обратное многошкальное 1D полиномиальное преобразование (MLPT) coefs.

пример

y = mlptrecon(___,Name,Value) задает mlptrecon свойства с помощью одного или нескольких Name,Value парные аргументы и входные параметры от предыдущего синтаксиса.

Примеры

свернуть все

Создайте низкочастотный сигнал с высокочастотными вспышками.

t = (0:0.01:10)';
x = sin(2*pi.*t) + 0.5*sin(pi.*t+0.1);
bliptime = (0:0.01:0.5)';
blip = sin(50*pi.*bliptime).*triang(numel(bliptime));
for i = [200,700,900]
    x(i:i+numel(bliptime)-1) = x(i:i+numel(bliptime)-1)+blip;
end

Выполните многоуровневое полиномиальное преобразование. Выполните обратное многоуровневое полиномиальное преобразование с помощью коэффициентов детали.

[w,t,nj,scalingmoments] = mlpt(x,t);
yDetails = mlptrecon('d',w,t,nj,scalingmoments,1);

Постройте исходный сигнал и обработанный сигнал.

subplot(2,1,1)
plot(t,x)
title('Original Signal')

subplot(2,1,2)
plot(t,yDetails)
title('Signal Details')

Аппроксимированные данные с помощью реконструкции многошкального локального полиномиального преобразования (MLPT). Используйте mlptrecon аппроксимировать поврежденный и редко произведенный контур подачи.

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

load('CorruptedPitchData.mat');
plot(time,pitchContour,'k','linewidth',3)
hold on
xlabel('Time (s)')
ylabel('Pitch (Hz)')

Вычислите MLPT контура подачи.

[w,t,nj,scalingMoments] = mlpt(pitchContour,time, ...
    'DualMoments',3, ...
    'PrimalMoments',4, ...
    'PreFilter','none');

Используйте mlptrecon восстановить сигнал с помощью коэффициентов приближения на разных уровнях.

y = zeros(numel(t),3);
for level = 1:3
    y(:,level) = mlptrecon('a',w,t,nj,scalingMoments,level,'DualMoments',3);
end

Постройте восстановленные сигналы. Уровень два получает лучшую сглаживавшую оценку.

plot(t,y(:,1),'c','linewidth',1)
plot(t,y(:,2),'linewidth',2)
plot(t,y(:,3),'linewidth',2)
legend('Original Data','Level = 1','Level = 2','Level = 3')
hold off

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

свернуть все

Тип коэффициентов раньше восстанавливал сигнал в виде 'a' или 'd'.

  • 'a' — Коэффициенты приближения

  • 'd' — Детализируйте коэффициенты

Коэффициенты приближения являются представлением lowpass входа. На каждом уровне коэффициенты приближения разделены на более грубое приближение и детализируют коэффициенты.

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

Коэффициенты 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 два раза избыточен в количестве коэффициентов детали, но не в t количество коэффициентов приближения.

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

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

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

Уровень разрешения, используемый для реконструкции в виде положительного целого числа, меньше чем или равного length(coefsPerLevel-1). length(coefsPerLevel-1) количество уровней разрешения, используемых, чтобы вычислить MLPT. Увеличение значения reconstructionLevel соответствует восстановлению вашего сигнала более грубыми приближениями разрешения.

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

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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, стр 545–555.

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

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

Введенный в R2017a