使用 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 数组类型:MWNumericArray
、MWLogicalArray
、MWCharArray
、MWCellArray
和 MWStructArray
。
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 类型。为了表示这些数据类型,您必须分别创建 MWCellArray
、MWStructArray
或 MWNumericArray
的实例。
有关 .NET 原生数据类型及其在 MATLAB 中的等效项的列表,请参阅.NET 与 MATLAB 之间的数据转换规则。