示例#1
0
 protected override bool EigImpl(Matrix A, Matrix B, out Matrix eigvec, out Vector eigval)
 {
     NamedLock.FuncOO <Matrix, Vector, bool> func = delegate(out Matrix leigvec, out Vector leigval)
     {
         Matlab.Clear("HTLib2_Matlab_EigImpl");
         Matlab.PutMatrix("HTLib2_Matlab_EigImpl.A", A.ToArray());
         Matlab.PutMatrix("HTLib2_Matlab_EigImpl.B", B.ToArray());
         Matlab.Execute("[HTLib2_Matlab_EigImpl.V, HTLib2_Matlab_EigImpl.D] = eig(HTLib2_Matlab_EigImpl.A, HTLib2_Matlab_EigImpl.B);");
         Matlab.Execute("HTLib2_Matlab_EigImpl.D = diag(HTLib2_Matlab_EigImpl.D);");
         leigvec = Matlab.GetMatrix("HTLib2_Matlab_EigImpl.V");
         leigval = Matlab.GetVector("HTLib2_Matlab_EigImpl.D");
         Matlab.Clear("HTLib2_Matlab_EigImpl");
         return(true);
     };
     //return NamedLock.LockedCall("bool HTLib2.Matlab.NumericSolver.EigImpl(Matrix, Matrix, out Matrix, out Vector)", func, out eigvec, out eigval);
     return(NamedLock.LockedCall(Matlab.NamedLock.GetName("HTLib2_Matlab_EigImpl"), func, out eigvec, out eigval));
 }
示例#2
0
 protected override bool EigImpl(Matrix mat, out Matrix eigvec, out Vector eigval)
 {
     NamedLock.FuncOO <Matrix, Vector, bool> func = delegate(out Matrix leigvec, out Vector leigval)
     {
         bool bUseFile = (mat.ColSize * mat.ColSize > 1000 * 1000);
         Matlab.Clear("HTLib2_Matlab_EigImpl");
         Matlab.PutMatrix("HTLib2_Matlab_EigImpl.A", mat.ToArray(), bUseFile);
         Matlab.Execute("[HTLib2_Matlab_EigImpl.V, HTLib2_Matlab_EigImpl.D] = eig(HTLib2_Matlab_EigImpl.A);");
         Matlab.Execute("HTLib2_Matlab_EigImpl.D = diag(HTLib2_Matlab_EigImpl.D);");
         leigvec = Matlab.GetMatrix("HTLib2_Matlab_EigImpl.V", bUseFile);
         leigval = Matlab.GetVector("HTLib2_Matlab_EigImpl.D");
         Matlab.Clear("HTLib2_Matlab_EigImpl");
         return(true);
     };
     //return NamedLock.LockedCall("bool HTLib2.Matlab.NumericSolver.EigImpl(Matrix, out Matrix, out Vector)", func, out eigvec, out eigval);
     return(NamedLock.LockedCall(Matlab.NamedLock.GetName("HTLib2_Matlab_EigImpl"), func, out eigvec, out eigval));
 }