mlptrecon

Reconstruct signal using inverse multiscale local 1-D polynomial transform

Description

example

y = mlptrecon(type,coefs,T,coefsPerLevel,scalingMoments,reconstructionLevel) returns an approximation to the inverse multiscale 1-D polynomial transform (MLPT) of coefs.

example

y = mlptrecon(___,Name,Value) specifies mlptrecon properties using one or more Name,Value pair arguments and the input arguments from the previous syntax.

Examples

collapse all

Create a low-frequency signal with high-frequency blips.

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

Perform a multilevel polynomial transform. Perform the inverse multilevel polynomial transform using the detail coefficients.

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

Plot the original signal and the processed signal.

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

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

Approximate data using multiscale local polynomial transform (MLPT) reconstruction. Use mlptrecon to approximate a corrupted and sparsely sampled pitch contour.

Load input data and visualize it.

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

Compute the MLPT of the pitch contour.

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

Use mlptrecon to reconstruct the signal using the approximation coefficients at different levels.

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

Plot the reconstructed signals. Level two obtains the best smoothed estimate.

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

Input Arguments

collapse all

Type of coefficients used to reconstruct the signal, specified as 'a' or 'd'.

  • 'a' — Approximation coefficients

  • 'd' — Detail coefficients

Approximation coefficients are a lowpass representation of the input. At each level, the approximation coefficients are divided into coarser approximation and detail coefficients.

Data Types: char | string

MLPT coefficients, specified as a vector or matrix of MLPT coefficients returned by the mlpt function.

Data Types: double

Sampling instants corresponding to y, specified as a vector or duration array of increasing values returned by the mlpt function.

Data Types: double | duration

Coefficients per resolution level, specified as a vector containing the number of coefficients at each resolution level in coefs. coefsPerLevel is an output argument of the mlpt function.

The elements of coefsPerLevel are organized as follows:

  • coefsPerLevel(1) — Number of approximation coefficients at the coarsest resolution level.

  • coefsPerLevel(i) — Number of detail coefficients at resolution level i, where i = numLevel – i + 2 for i = 2,..., numLevel + 1. numLevel is the number of resolution levels used to calculate the MLPT. numLevel is inferred from coefsPerLevel: numLevel = length(coefsPerLevel-1).

The smaller the index i, the lower the resolution. The MLPT is two times redundant in the number of detail coefficients, but not in t the number of approximation coefficients.

Data Types: double

Scaling function moments, specified as a length(coefs)-by-P matrix, where P is the number of primal moments specified by the MLPT.

Data Types: double

Resolution level used for reconstruction, specified as a positive integer less than or equal to length(coefsPerLevel-1). length(coefsPerLevel-1) is the number of resolution levels used to calculate the MLPT. Increasing the value of reconstructionLevel corresponds to reconstructing your signal with coarser resolution approximations.

Data Types: double

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'DualMoments',3 computes a transform using three dual vanishing moments.

Number of dual vanishing moments in the lifting scheme, specified as the comma-separated pair consisting of 'DualMoments' and 2, 3 or 4. The number of dual moments must match the number used by mlpt.

Data Types: double

Output Arguments

collapse all

Reconstructed approximation or details of signal, returned as a vector or matrix, depending on the inputs to the mlpt function.

Data Types: double

Algorithms

Maarten Jansen developed the theoretical foundation of the multiscale local polynomial transform (MLPT) and algorithms for its efficient computation [1][2][3]. The MLPT uses a lifting scheme, wherein a kernel function smooths fine-scale coefficients with a given bandwidth to obtain the coarser resolution coefficients. The mlpt function uses only local polynomial interpolation, but the technique developed by Jansen is more general and admits many other kernel types with adjustable bandwidths [2].

References

[1] Jansen, M. "Multiscale Local Polynomial Smoothing in a Lifted Pyramid for Non-Equispaced Data." IEEE Transactions on Signal Processing. Vol. 61, Number 3, 2013, pp. 545–555.

[2] Jansen, M. and M. Amghar. "Multiscale local polynomial decompositions using bandwidths as scales”. Statistics and Computing (forthcoming). 2016.

[3] Jansen, M. and Patrick Oonincx. Second Generation Wavelets and Applications. London: Springer, 2005.

Introduced in R2017a