double vector_stdv_mad( VectorXf residues) { // Return the standard deviation of vector with MAD estimation int n_samples = residues.size(); sort( residues.derived().data(),residues.derived().data()+residues.size()); double median = residues( n_samples/2 ); residues << ( residues - VectorXf::Constant(n_samples,median) ).cwiseAbs(); sort(residues.derived().data(),residues.derived().data()+residues.size()); double MAD = residues( n_samples/2 ); return 1.4826 * MAD; }