Main Content

Feval (COM)

자동화 서버에서 MATLAB 함수 실행

요약

IDL 메서드 시그니처

HRESULT Feval([in] BSTR functionname, [in] long nargout, 
    [out] VARIANT* result, [in, optional] VARIANT arg1, arg2, ...)

Microsoft Visual Basic 클라이언트

Feval(String functionname, long numout, 
    arg1, arg2, ...) As Object

MATLAB 클라이언트

result = Feval(h,'functionName',numout,arg1,arg2,...)

설명

result = Feval(h,'functionName',numout,arg1,arg2,...)h에 연결된 자동화 서버에서 MATLAB® 함수 functionName을 실행합니다. 함수 이름은 대/소문자를 구분합니다. functionName에 입력 인수가 없는 경우 Execute를 대신 호출해 보십시오.

COM 객체의 함수는 Microsoft® Windows® 시스템에서만 사용할 수 있습니다.

함수가 반환하는 출력값의 개수를 1×1 double형 배열 numout으로 표시합니다. 서버는 함수의 출력을 셀형 배열, result로 반환합니다.

함수에 전달될 입력 인수를 32개까지 지정할 수 있습니다. 이러한 인수는 Feval 인수 목록에서 numout 뒤에 옵니다. 다음 표는 인수를 전달하는 방법을 보여줍니다.

전달 메커니즘

설명

값 자체를 전달

숫자형 값이나 문자형 값을 전달하려면 Feval 인수 목록에서 값을 지정하십시오.

a = Feval(h,'sin',1,-pi:0.01:pi);

클라이언트 변수 전달

클라이언트의 변수에 할당된 인수를 전달하려면 변수 이름을 단독으로 지정하십시오.

x = -pi:0.01:pi;
a = Feval(h,'sin',1,x);

서버 변수 참조

서버에 정의된 변수를 참조하려면 변수 이름 다음에 같음(=) 기호를 지정하십시오.

PutWorkspaceData(h,'x','base',-pi:0.01:pi);
a = Feval(h,'sin',1,'x=');

MATLAB은 서버 변수를 다시 할당하지 않습니다.

예제

모두 확장

이 예제에서는 Feval을 사용하여 MATLAB strcat 명령으로 string형 인수를 전달하는 방법을 보여줍니다.

다음 코드를 사용하여 Visual Basic® .NET 애플리케이션을 만듭니다.

type fevalPassingArguments.vb
Dim Matlab As Object 
Dim out As Object 
out = Nothing 
Matlab = CreateObject("matlab.application") 
Matlab.Feval("strcat",1,out,"hello"," world") 
Dim clistr As String
clistr = " world"
Matlab.Feval("strcat",1,out,"hello",clistr)
Matlab.PutCharArray("srvstr","base"," world")
Matlab.Feval("strcat",1,out,"hello","srvstr=")

이 예제에서는 fileparts 함수에서 filepath, nameext 인수를 반환하는 방법을 보여줍니다.

Feval은 실행된 함수에서 데이터를 셀형 배열로 반환합니다. 셀형 배열은 반환 값당 하나의 행을 갖습니다. Feval numout 인수를 사용하여 반환 값 개수를 제어합니다.

다음 코드를 사용하여 Visual Basic .NET 클라이언트를 만듭니다.

type fevalDefiningFevalReturnValues.vb
Dim Matlab As Object
Dim out As Object
Matlab = CreateObject("matlab.application")
Matlab.Feval("fileparts",3,out,"d:\work\ConsoleApp.cpp")

이 예제에서는 수정된 서버 변수를 반환하는 방법을 보여줍니다.

서버에서 행렬 A를 만듭니다.

A의 형태를 변경합니다. MATLAB은 표현식 'A='에서 A를 서버 변수 이름으로 해석합니다.

reshape 함수는 변수 A를 수정하지 않습니다. A는 변경되지 않습니다.

reshape 함수의 결과를 가져오려면 numout 인수를 사용하여 값을 C에 할당하십시오.

다음 코드를 사용하여 Visual Basic .NET 애플리케이션을 만듭니다.

type fevalModifiedServerVariables.vb
Dim Matlab As Object 
Dim rows As Double 
Dim cols As Double 
Dim out As Object 
out = Nothing 
Dim data(7) As Double 
For i = 0 To 7 
    data(i) = i * 15 
Next i 
Matlab = CreateObject("matlab.application") 
Matlab.PutWorkspaceData("A", "base", data) 
rows = 4 
cols = 2 
Matlab.Feval("reshape", 1, out, "A=", rows, cols)

  • 클라이언트 창에 Feval의 출력을 표시하려면 반환 값을 할당하십시오.

버전 내역

R2006a 이전에 개발됨