Documentation |
Wavelet multivariate de-noising
[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]
= ...
wmulden(X,LEVEL,WNAME,NPC_APP,NPC_FIN,TPTR,SORH) or
[...] = wmulden(X,LEVEL,WNAME,'mode',EXTMODE,NPC_APP,...)
returns a de-noised version X_DEN of the input
matrix X. The strategy combines univariate wavelet
de-noising 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 columnwise 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.
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 de-noising 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)
For additional information, see wden and wbmpen.
X_DEN is a de-noised 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 string containing the name of the de-noising 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('execute',DEC,PC_Params) uses the principal components estimates 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 de-noising 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 de-noising. [x_den, npc, nestco] = wmulden(x, level, wname, npc_app, ... npc_fin, tptr, sorh); % Display the original and de-noised 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(['De-noised 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 de-noised. % 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
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.