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® システムでのみ使用可能です。

関数が返す出力の数は、11 列の double 配列 numout で指定します。サーバーは関数の出力を cell 配列 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 を使用して string 引数を MATLAB の strcat コマンドに渡す方法を説明します。

次のコードを使用して、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 から filepathnameext の各引数を返す方法を説明します。

関数 Feval は、評価した関数からの出力データを cell 配列に返します。この cell 配列では、すべての戻り値が 1 つの行に格納されます。Fevalnumout 引数を使用して、戻り値の数を制御します。

次のコードを使って 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 より前に導入