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 命令。

创建一个 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 返回元胞数组中的已计算函数的数据。元胞数组的每一行中有一个返回值。应使用 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 函数不修改变量 AA 不变。

要获得 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 之前推出