Main Content

.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

참고 항목

관련 항목