.NET에서 MATLAB 함수 실행하기
.NET에서 MATLAB® 함수를 호출할 때 .NET 변수를 함수로 전달할 수 있습니다. MATLAB 함수가 출력 변수를 반환하면 엔진은 이를 MATLAB에서 .NET으로 변환합니다.
.NET 엔진 프로그램을 설정하고 빌드하는 방법에 관한 자세한 내용은 .NET 개발 환경 테스트하기 항목을 참조하십시오.
.NET에서 MATLAB으로 변수 전달하기
이 예제에서는 MATLAB linspace
함수를 사용하여 1차원 double형 배열을 만들고 reshape
를 사용하여 요소의 형태를 변경합니다. 데이터를 .NET에서 MATLAB으로 변환하는 방법에 대한 자세한 내용은 Pass .NET Data Types to MATLAB Functions 항목을 참조하십시오.
이 예제에 대한 MATLAB 코드는 다음과 같습니다.
A = linspace(-5.0,5.0); sz = [25,4]; B = reshape(A,sz);
이 예제에 대한 C# 코드는 다음과 같습니다.
using MathWorks.MATLAB.Engine; using MathWorks.MATLAB.Exceptions; using MathWorks.MATLAB.Types; using System; namespace MathWorks.MATLAB.Engine.ConsoleExamples { public class Program { public static void Main(string[] args) { Console.Write("Starting MATLAB... "); using (dynamic matlab = MATLABEngine.StartMATLAB()) { Console.WriteLine("done."); double[] A = matlab.linspace(-5.0,5.0); int[] sz = new int[] {25,4}; double[,] B = matlab.reshape(A,sz); } // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); } } }
MATLAB에서 .NET으로 변수 전달하기
MATLABmagic
함수는 2차원 double형 행렬을 반환합니다. 그러면 엔진은 반환된 MATLAB 2차원 double형 행렬을 double[,]
로 선언된 .NET 변수 dbls
로 변환합니다. 이렇게 하면 .NET 프로그램에서 dbls
를 사용할 수 있습니다. 데이터를 MATLAB에서 .NET으로 변환하는 방법에 대한 자세한 내용은 Handle MATLAB Data in .NET Applications 항목을 참조하십시오.
이 예제에 대한 C# 코드는 다음과 같습니다.
using MathWorks.MATLAB.Engine; using MathWorks.MATLAB.Exceptions; using MathWorks.MATLAB.Types; using System; namespace MathWorks.MATLAB.Engine.ConsoleExamples { public class Program { public static void Main(string[] args) { Console.Write("Starting MATLAB... "); using (dynamic matlab = MATLABEngine.StartMATLAB()) { Console.WriteLine("done."); double[,] dbls = matlab.magic(3.0); matlab.disp(new RunOptions(nargout: 0), dbls); } // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); } } }
이 코드에서 변수 dbls
는 2차원 double형 행렬로 정의됩니다. 다음과 같은 다른 크기 정의도 사용할 수 있습니다.
double[,] dbls = matlab.magic(3.0); // 3x3 double[,,] dbls = matlab.magic(3.0); // 3x3x1 Array dbls = matlab.magic(3.0); // 3x3
다음 코드는 숫자 3.0
을 나타내는 크기 정의를 보여줍니다.
double x = matlab.eval(" 3.0 "); // double scalar double[] y = matlab.eval(" 3.0 "); // double array, length 1 double[,,,] z = matlab.eval(" 3.0 "); // 1x1x1x1 Array q = matlab.eval(" 3.0 "); // 1x1
참고 항목
MathWorks.MATLAB.Engine.MATLABEngine