Singular value matrix decomposition
Performs singular value decomposition of \(M\times N\) (\(M>N\)) matrix \(A = U*\Sigma*V^T\).
Parameters:
src | pointer to input \(M\times N\) matrix \(A\) stored in column major order. After finish of work src will be filled with rows of \(U\) or not modified (depends of flag CV_HAL_SVD_MODIFY_A). |
src_step | number of bytes between two consequent columns of matrix \(A\). |
w | pointer to array for singular values of matrix \(A\) (i. e. first \(N\) diagonal elements of matrix \(\Sigma\)). |
u | pointer to output \(M\times N\) or \(M\times M\) matrix \(U\) (size depends of flags). Pointer must be valid if flag CV_HAL_SVD_MODIFY_A not used. |
u_step | number of bytes between two consequent rows of matrix \(U\). |
vt | pointer to array for \(N\times N\) matrix \(V^T\). |
vt_step | number of bytes between two consequent rows of matrix \(V^T\). |
m | number fo rows in matrix \(A\). |
n | number of columns in matrix \(A\). |
flags | algorithm options (combination of CV_HAL_SVD_FULL_UV, …). |
// global functions int hal_ni_SVD32f( float* src, size_t src_step, float* w, float* u, size_t u_step, float* vt, size_t vt_step, int m, int n, int flags ); int hal_ni_SVD64f( double* src, size_t src_step, double* w, double* u, size_t u_step, double* vt, size_t vt_step, int m, int n, int flags );