/// <summary> /// decomposes matrix and stores the results to user-provided matrices /// </summary> /// <param name="src"></param> /// <param name="w"></param> /// <param name="u"></param> /// <param name="vt"></param> /// <param name="flags"></param> public static void Compute(InputArray src, OutputArray w, OutputArray u, OutputArray vt, SVDFlag flags = SVDFlag.None) { if (src == null) { throw new ArgumentNullException(nameof(src)); } if (w == null) { throw new ArgumentNullException(nameof(w)); } if (u == null) { throw new ArgumentNullException(nameof(u)); } if (vt == null) { throw new ArgumentNullException(nameof(vt)); } src.ThrowIfDisposed(); w.ThrowIfNotReady(); u.ThrowIfNotReady(); vt.ThrowIfNotReady(); NativeMethods.core_SVD_static_compute(src.CvPtr, w.CvPtr, u.CvPtr, vt.CvPtr, (int)flags); w.Fix(); u.Fix(); vt.Fix(); }
/// <summary> /// the constructor that performs SVD /// </summary> /// <param name="src"></param> /// <param name="flags"></param> public SVD(InputArray src, SVDFlag flags = SVDFlag.None) { if (src == null) throw new ArgumentNullException("src"); src.ThrowIfDisposed(); ptr = NativeMethods.core_SVD_new(src.CvPtr, (int)flags); }
/// <summary> /// the constructor that performs SVD /// </summary> /// <param name="src"></param> /// <param name="flags"></param> public SVD(InputArray src, SVDFlag flags = SVDFlag.None) { if (src == null) { throw new ArgumentNullException(nameof(src)); } src.ThrowIfDisposed(); ptr = NativeMethods.core_SVD_new(src.CvPtr, (int)flags); }
/// <summary> /// the operator that performs SVD. The previously allocated SVD::u, SVD::w are SVD::vt are released. /// </summary> /// <param name="src"></param> /// <param name="flags"></param> /// <returns></returns> public SVD Run(InputArray src, SVDFlag flags = SVDFlag.None) { if (disposed) { throw new ObjectDisposedException("SVD"); } if (src == null) { throw new ArgumentNullException(nameof(src)); } src.ThrowIfDisposed(); NativeMethods.core_SVD_operatorThis(ptr, src.CvPtr, (int)flags); return(this); }
/// <summary> /// computes singular values of a matrix /// </summary> /// <param name="src"></param> /// <param name="w"></param> /// <param name="flags"></param> public static void Compute(InputArray src, OutputArray w, SVDFlag flags = SVDFlag.None) { if (src == null) { throw new ArgumentNullException("src"); } if (w == null) { throw new ArgumentNullException("w"); } src.ThrowIfDisposed(); w.ThrowIfNotReady(); NativeMethods.core_SVD_static_compute(src.CvPtr, w.CvPtr, (int)flags); w.Fix(); }
public static extern void cvSVD(IntPtr A, IntPtr W, IntPtr U, IntPtr V, SVDFlag flags);
public static extern void cvSVBkSb(IntPtr W, IntPtr U, IntPtr V, IntPtr B, IntPtr X, SVDFlag flags);
/// <summary> /// computes SVD of src /// </summary> /// <param name="src"></param> /// <param name="w"></param> /// <param name="u"></param> /// <param name="vt"></param> /// <param name="flags"></param> public static void SVDecomp(InputArray src, OutputArray w, OutputArray u, OutputArray vt, SVDFlag flags = SVDFlag.None) { if (src == null) throw new ArgumentNullException("src"); if (w == null) throw new ArgumentNullException("w"); if (u == null) throw new ArgumentNullException("u"); if (vt == null) throw new ArgumentNullException("vt"); src.ThrowIfDisposed(); w.ThrowIfNotReady(); u.ThrowIfNotReady(); vt.ThrowIfNotReady(); NativeMethods.core_SVDecomp(src.CvPtr, w.CvPtr, u.CvPtr, vt.CvPtr, (int)flags); w.Fix(); u.Fix(); vt.Fix(); }
/// <summary> /// computes singular values of a matrix /// </summary> /// <param name="src"></param> /// <param name="w"></param> /// <param name="flags"></param> public static void Compute(InputArray src, OutputArray w, SVDFlag flags = SVDFlag.None) { if (src == null) throw new ArgumentNullException("src"); if (w == null) throw new ArgumentNullException("w"); src.ThrowIfDisposed(); w.ThrowIfNotReady(); NativeMethods.core_SVD_static_compute(src.CvPtr, w.CvPtr, (int)flags); w.Fix(); }
/// <summary> /// the operator that performs SVD. The previously allocated SVD::u, SVD::w are SVD::vt are released. /// </summary> /// <param name="src"></param> /// <param name="flags"></param> /// <returns></returns> public SVD Run(InputArray src, SVDFlag flags = SVDFlag.None) { if (disposed) throw new ObjectDisposedException("SVD"); if (src == null) throw new ArgumentNullException("src"); src.ThrowIfDisposed(); NativeMethods.core_SVD_operatorThis(ptr, src.CvPtr, (int)flags); return this; }