SVD of Noisy Data: error analysis and noise filtering (svde)

Singular value decomposition of noisy data, including "error bars" on the modes. Also useful for filtering noisy data.
415 Downloads
Updated 20 May 2020

View License

The singular value decomposition (SVD) can be used to decompose a time series of data into spatiotemporal modes. For noisy data, however, the higher SVD modes are corrupted. This corruption both (1) motivates the need for "error bars" on the SVD modes; and (2) suggests the possibility for noise filtering by retaining only the lower modes.

The svde function performs the SVD (using Matlab's built-in function, svd) and then performs error analysis to determine:
-- the root mean square error level in the given data;
-- the "error bars" (95% confidence intervals) of each SVD mode (singular value and vectors); and
-- the overall root mean square error (rmse) of each SVD mode.

These results are also used to filter the noise from the given data and form a reconstructed estimate of the underlying "clean data". Since the lower SVD modes are relatively clean, this reconstructed data set is formed using only the modes that have low enough rmse. This method yields the most-accurate-possible SVD-based reconstruction of the clean data. For examples, see the References listed below.

Syntax:
d = svde(M,varargin)

Inputs:
M = noisy data matrix
vargin = optional list of flags

Output:
d = data structure containing svde outputs

For discrete data, the proper orthogonal decomposition (POD) yields identical results as the SVD, so this code also applies to the POD of noisy data.

Cite As

Brenden Epps (2024). SVD of Noisy Data: error analysis and noise filtering (svde) (https://www.mathworks.com/matlabcentral/fileexchange/75242-svd-of-noisy-data-error-analysis-and-noise-filtering-svde), MATLAB Central File Exchange. Retrieved .

Brenden Epps and Eric Krivitzky (2019a) "Singular value decomposition of noisy data: mode corruption", Experiments in Fluids 60:121, https://doi.org/10.1007/s00348-019-2761-y

Brenden Epps and Eric Krivitzky (2019b) "Singular value decomposition of noisy data: noise filtering", Experiments in Fluids 60:126, https://doi.org/10.1007/s00348-019-2768-4

MATLAB Release Compatibility
Created with R2019a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Acoustics, Noise and Vibration in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.1

Modified Kmin,Kmax terms in SVD_Estimate_Error_v7() to enable T < 10 case. Using T < 10 is not recommended, however, because T >> 1 is required for statistical significance.

1.0.0