主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

MATLAB Compiler SDK 生成的接口

MATLAB® Compiler SDK™ 根据 MATLAB 函数签名为 .NET 程序集中的每个 MATLAB 函数生成一个或多个 API。

  • 单一输出签名假定只需要单一输出并以单一 MWArray 而非 MWArray 数组的形式返回结果。

  • 指定 MWArray 类型的输入并以 MWArray 数组形式返回值的标准签名。

  • Feval签名在参量列表中包含输入和输出参量,而不是将输出作为返回值返回。首先指定输出参量,然后指定输入参量。

单输出 API

对于 .NET 程序集中的每个 MATLAB 函数,MATLAB Compiler SDK 都会生成一个包装器类,该类具有重载方法来实现各种形式的通用 MATLAB 函数调用。MATLAB 函数的单输出 API 返回单个 MWArray

通常,您对返回单个参量的 MATLAB 函数使用单输出接口。当您想使用一个函数的输出作为另一个函数的输入时,也可以使用单输出接口。

下表显示了通用函数 foo 以及编译器为其几种形式生成的单个输出 API。

通用 MATLAB 函数
function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., InN, 
varargin)
没有输入参量时的 API
public MWArray foo() 
如果有一个或多个输入参量
public MWArray foo(MWArray In1, MWArray In2...MWArray inN)
如果有可选输入参量,则使用 API
public MWArray foo(MWArray In1, MWArray In2,      ..., MWArray 
inN
params MWArray[] varargin)

在示例中,输入参量 In1, In2inN 属于 MWArray 类型。

类似地,对于可选参量,params 参量的类型为 MWArray。(varargin 参量类似于 MATLAB 中的 varargin 函数 - 它允许用户传递可变数量的参量。)

注意

在 .NET 应用程序中调用类方法时,请首先指定所有必需的输入,然后指定任何可选参量。

具有单个整数输入的函数需要显式转换为 MWNumericArray 类型,以区分方法签名和没有输入参量的标准接口签名。

标准 API

通常,您使用返回多个输出值的 MATLAB 函数的标准接口。

标准调用接口返回的是 MWArray 数组,而不是单个数组对象。

下表显示了具有零个、一个、多个或可变数量参量的泛型函数的标准 API。

通用 MATLAB 函数
function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., InN, 
varargin)
没有输入参量时的 API
public MWArray[] foo(int numArgsOut) 
有一个输入参量时的 API
public MWArray [] foo(int numArgsOut, MWArray In1) 
有两个到 N 个输入参量时的 API
public MWArray[] foo(int numArgsOut, MWArray In1,MWArray In2, 
\... MWArray InN) 
有可选参量时的 API,用 varargin 参量表示
public MWArray[] foo(int numArgsOut,MWArray in1,MWArray in2, 
MWArray InN,
params MWArray[] 
varargin)

这些标准签名样本的参量的详细信息如下表所示。

参量描述详细信息
numArgsOut输出的数目

一个整数,表示您希望该方法返回的输出数量。

numArgsOut 参量必须始终是列表中的第一个参量。

In1, In2, ...InN必需的输入参量

参量列表中 numArgsOut 之后的所有参量都是被调用方法的输入。

首先指定所有必需的输入。每个必需输入必须是 MWArray 类型或其派生类型之一。

varargin可选输入

如果您的 MATLAB 代码使用 varargin 输入,您还可以指定可选输入:列出可选输入,或将它们放在 MWArray[] 参量中,并将数组放在参量列表的最后。

Out1, Out2, ...OutN输出参量

使用标准调用接口,所有输出参量都作为 MWArray 数组返回。

feval API

除了单一 API 和标准 API 中的方法外,大多数情况下,MATLAB Compiler SDK 产品还会生成额外的重载方法。如果原始 MATLAB 代码不包含输出参量,则编译器将不会生成 feval 方法接口。

考虑具有以下结构的函数:

function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., InN, 
varargin)

编译器生成以下 API,称为 feval 接口

public void foo 
            (int numArgsOut,
             ref MWArray [] ArgsOut, 
             MWArray[] ArgsIn)

该接口接受以下参量:

numArgsOut输出的数目

一个整数,表示您想要返回的输出数量。

该数字通常与后面的输出参量的数量相匹配。如果存在的话,varargout 数组仅算作一个参量。

ref MWArray [] ArgsOut输出参量

numArgsOut 之后是原始 MATLAB 代码的所有输出,每个输出都按原始 MATLAB 代码左侧出现的顺序列出。

所有输出参量前面都有一个 ref 属性,表明这些数组是通过引用传递的。

MWArray[] ArgsIn输入参量

MWArray 类型或支持的 .NET 原始类型。

当您传递 MWArray 类型的实例时,底层 MATLAB 数组将直接传递给被调用的函数。本机类型首先转换为 MWArray 类型。