主要内容

Feval (COM)

R2026b

在自动化服务器中执行 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 函数返回 filepath、name 和 ext 参量。

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