主要内容

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

使用 MWArray API 进行数据编组

为了支持托管 .NET 类型和 MATLAB® 类型之间的数据转换,MATLAB Compiler SDK™ 提供了一组从抽象类 MWArray 派生的数据转换类。这些类允许您直接传递大多数本机 .NET 值类型作为参数,而无需使用显式数据转换。您可以在托管应用程序中引用 MWArray 集将原生数组转换为 MATLAB 数组,反之亦然。这个过程称为数据编组

当调用组件上的方法时,输入和输出参数是 MWArray 的派生类型。要传递参数,您可以显式实例化其中一个 MWArray 子类,或者在许多情况下,将参数作为托管数据类型传递,并依赖于 MATLAB Compiler SDK 的隐式数据转换功能。

有关在各种本机数据类型和与 MATLAB 兼容的类型之间进行手动数据转换的指南的示例,请参阅在 .NET 和 MATLAB 之间转换数据

MWArray 数据转换类

MWArray 数据转换类构建为代表主要 MATLAB 数组类型的类层次结构。

  • MWArray

  • MWIndexArray

  • MWCellArray

  • MWCharacterArray

  • MWLogicalArray

  • MWNumericArray

  • MWStructArray

层次结构的根是 MWArray 抽象类 MWIndexArray 也是一个抽象类。其他子类代表主要的 MATLAB 数组类型:MWNumericArrayMWLogicalArrayMWCharArrayMWCellArrayMWStructArray

MWArray 及其派生类提供以下功能:

  • 构造函数和析构函数用于实例化和处置 MATLAB 数组

  • 获取和设置底层数组数据的属性

  • 支持 MATLAB 数组索引子集的索引器

  • 隐式和显式数据转换运算符

  • 常规方法

有关这些数据转换类的信息,请参阅MWArray 类库参考

将数据从 .NET 代码传递到 MATLAB

在大多数情况下,如果您在 C# 程序中使用本机 .NET 基元或数组作为输入参数,MATLAB Compiler SDK 会自动透明地将其转换为适当的 MWArray 类的实例,然后再将其传递给生成的方法。MATLAB MATLAB Compiler SDK 会将大多数符合 CLS 的字符串、数值类型或这些类型的多维数组转换为适当的 MWArray 类型。有关不受支持类型的列表,请参阅不支持的 MATLAB 数组类型。这种转换在 C# 应用程序中是透明的,但在其他语言中可能需要显式转换运算符,例如 Visual Basic® 中的 op_implicit

例如,考虑 .NET 语句:

result = theFourier.plotfft(3, data, interval);

在此语句中,参量 interval 属于 .NET 本机类型 System.Double。MATLAB MATLAB Compiler SDK 将此参量转换为 MATLAB 1×1 双精度 MWNumericArray 类型,这是一个包含 MATLAB 双精度数组的包装器类。

将数据从 MATLAB 传递到 .NET 代码

从 MATLAB 函数返回到 .NET 方法的所有数据都表示为适当的 MWArray 子类的实例。例如,MATLAB 元胞数组作为 MWCellArray 对象返回。

返回的数据不会自动转换为原生数组。如果需要获取相应的原生数组类型,请调用 ToArray 方法,该方法将 MATLAB 数组转换为适当的本机数据类型,但有一些例外。元胞数组、结构体数组和复数数组不能用作本机 .NET 类型。为了表示这些数据类型,您必须分别创建 MWCellArrayMWStructArrayMWNumericArray 的实例。

有关 .NET 原生数据类型及其在 MATLAB 中的等效项的列表,请参阅.NET 与 MATLAB 之间的数据转换规则

另请参阅

主题