The main purpose of minimum or maximum variance analysis (MVA) is to find an estimator for the direction normal
using Pkg; Pkg.add("MinimumVarianceAnalysis")
using MinimumVarianceAnalysis
using MinimumVarianceAnalysis: normal
Bl = cosd.(0:30:180)
Bm = sind.(0:30:180)
Bn = 0.1 .* ones(7)
B = hcat(Bl, Bm, Bn)
F = mva_eigen(B)
normal(F) # minimum-variance direction for magnetic-field MVA
mva(B) # rotate samples into variance frameFor electric-field maximum variance analysis, pass field = :E:
E = hcat(0.1 .* ones(7), 0.05 .* ones(7), cosd.(0:30:180))
F = mva_eigen(E; field = :E)
normal(F; field = :E)Unitful, DynamicQuantities, FlexUnits, and DimensionalData inputs are supported:
using Unitful
F = mva_eigen(B .* u"nT")
F.values # eigenvalues carry squared field units
F.vectors # eigenvectors are dimensionless directionsSee SPEDAS for more details. See SPEDAS validation for comparison with a Python implementation (pyspedas).
- Maximum Variance Analysis on Magnetic Field (MVAB)
- Constraint
$〈B₃〉 = 0$
- Constraint
- Maximum Variance Analysis on Electric Field (MVAE)
- Transformation to/from moving frame of reference
- Minimum Variance Analysis on Mass Flux (MVAρv)
- Application to 2-D Structures
- Anisotropic fluctuations have been shown to lead to larger errors in normal determinations.