Wavelet multivariate denoising
[X_DEN,NPC,NESTCOV,DEC_DEN,PCA_Params,DEN_Params]
= ...
wmulden(X,LEVEL,WNAME,NPC_APP,NPC_FIN,TPTR,SORH)
[...] = wmulden(X,LEVEL,WNAME,'mode',EXTMODE,NPC_APP,...)
[...] = wmulden(DEC,NPC_APP)
[...] = wmulden(X,LEVEL,WNAME,'mode',EXTMODE,NPC_APP)
[DEC,PCA_Params] = wmulden('estimate',DEC,NPC_APP,NPC_FIN)
[X_DEN,NPC,DEC_DEN,PCA_Params] = wmulden('execute',DEC,PC_Params)
[X_DEN,NPC,NESTCOV,DEC_DEN,PCA_Params,DEN_Params]
= ...
or
wmulden(X,LEVEL,WNAME,NPC_APP,NPC_FIN,TPTR,SORH)
[...] = wmulden(X,LEVEL,WNAME,'mode',EXTMODE,NPC_APP,...)
returns a
denoised version X_DEN
of the input matrix X
. The
strategy combines univariate wavelet denoising in the basis where the estimated noise
covariance matrix is diagonal with noncentered Principal Component Analysis (PCA) on
approximations in the wavelet domain or with final PCA.
The input matrix X
contains P
signals
of length N stored column-wise where N
> P
.
The wavelet decomposition is performed using the decomposition
level LEVEL
and the wavelet WNAME
.
EXTMODE
is the extended mode for the DWT
(See dwtmode
).
If a decomposition DEC
obtained using mdwtdec
is available, you can use
[...] = wmulden(DEC,NPC_APP)
instead of
[...] = wmulden(X,LEVEL,WNAME,'mode',EXTMODE,NPC_APP)
.
The input selection methods NPC_APP
and NPC_FIN
define
the way to select principal components for approximations at level LEVEL
in
the wavelet domain and for final PCA after wavelet reconstruction,
respectively.
If NPC_APP
(or NPC_FIN
)
is an integer, it contains the number of retained principal components
for approximations at level LEVEL
(or for final
PCA after wavelet reconstruction).
NPC_XXX
must be such that 0 <= NPC_XXX
<= P
NPC_APP
or NPC_FIN
= 'kais'
or 'heur'
selects the number
of retained principal components using Kaiser's rule or the heuristic
rule automatically.
Kaiser's rule keeps the components associated with eigenvalues greater than the mean of all eigenvalues.
The heuristic rule keeps the components associated with eigenvalues greater than 0.05 times the sum of all eigenvalues.
NPC_APP
or NPC_FIN
= 'none'
is equivalent
to NPC_APP
or NPC_FIN
= P
.
The default values for the denoising parameters TPTR and SORH are:
TPTR = 'sqtwolog'
and SORH
= 's'
Valid values for TPTR
are
'rigsure', 'heursure', 'sqtwolog', 'minimaxi', 'penalhi', 'penalme', 'penallo'
Valid values for SORH are:
's' (soft) or 'h' (hard)
X_DEN
is a denoised version of the input matrix
X
.
NPC
is the vector of selected numbers of
retained principal components.
NESTCOV
is the estimated noise covariance
matrix obtained using the minimum covariance determinant (MCD) estimator.
DEC_DEN
is the wavelet decomposition of X_DEN
.
PCA_Params
is a structure such that:
PCA_Params.NEST = {pc_NEST,var_NEST,NESTCOV} PCA_Params.APP = {pc_APP,var_APP,npc_APP} PCA_Params.FIN = {pc_FIN,var_FIN,npc_FIN}
where:
pc_XXX
is a P
-by-P
matrix
of principal components.
The columns are stored in descending order of the variances.
var_XXX
is the principal component
variances vector.
NESTCOV
is the covariance matrix
estimate for detail at level 1.
DEN_Params
is a structure such that:
DEN_Params.thrVAL
is a vector of
length LEVEL
which contains the threshold values
for each level.
DEN_Params.thrMETH
is a character vector containing the
name of the denoising method (TPTR
).
DEN_Params.thrTYPE
is a character
variable containing the type of the thresholding (SORH
).
[DEC,PCA_Params] = wmulden('estimate',DEC,NPC_APP,NPC_FIN)
returns the wavelet decomposition DEC
and the
Principal Components Estimates PCA_Params
.
[X_DEN,NPC,DEC_DEN,PCA_Params] = wmulden(
uses
the principal components estimates 'execute'
,DEC
,PC_Params
)PCA_Params
previously
computed.
The input value DEC
can be replaced by X
, LEVEL
,
and WNAME
.
% Load a multivariate signal x together with % the original signals (x_orig) and true noise % covariance matrix (covar). load ex4mwden % Set the denoising method parameters. level = 5; wname = 'sym4'; tptr = 'sqtwolog'; sorh = 's'; % Set the PCA parameters to select the number of % retained principal components automatically by % Kaiser's rule. npc_app = 'kais'; npc_fin = 'kais'; % Perform multivariate denoising. [x_den, npc, nestco] = wmulden(x, level, wname, npc_app, ... npc_fin, tptr, sorh); % Display the original and denoised signals. kp = 0; for i = 1:4 subplot(4,3,kp+1), plot(x_orig(:,i)); title(['Original signal ',num2str(i)]) subplot(4,3,kp+2), plot(x(:,i)); title(['Observed signal ',num2str(i)]) subplot(4,3,kp+3), plot(x_den(:,i)); title(['Denoised signal ',num2str(i)]) kp = kp + 3; end
% The results are good: the first function, which is % irregular, is correctly recovered while the second % function, more regular, is well denoised. % The second output argument gives the numbers % of retained principal components for PCA for % approximations and for final PCA. npc npc = 2 2 % The third output argument contains the estimated % noise covariance matrix using the MCD based % on the matrix of finest details. nestco nestco = 1.0784 0.8333 0.6878 0.8141 0.8333 1.0025 0.5275 0.6814 0.6878 0.5275 1.0501 0.7734 0.8141 0.6814 0.7734 1.0967 % The estimation is satisfactory since the values are close % to the true values given by covar. covar covar = 1.0000 0.8000 0.6000 0.7000 0.8000 1.0000 0.5000 0.6000 0.6000 0.5000 1.0000 0.7000 0.7000 0.6000 0.7000 1.0000
The multivariate denoising procedure is a generalization of the one-dimensional strategy. It combines univariate wavelet denoising in the basis where the estimated noise covariance matrix is diagonal and non-centered Principal Component Analysis (PCA) on approximations in the wavelet domain or with final PCA.
The robust estimate of the noise covariance matrix given by the minimum covariance determinant estimator based on the matrix of finest details.
Aminghafari, M.; Cheze, N.; Poggi, J-M. (2006), “Multivariate de-noising using wavelets and principal component analysis,” Computational Statistics & Data Analysis, 50, pp. 2381–2398.
Rousseeuw, P.; Van Driessen, K. (1999), “A fast algorithm for the minimum covariance determinant estimator,” Technometrics, 41, pp. 212–223.