主要内容

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

类 MWFlags

MWFlags 类包含一组数组格式和数据转换标志。有关 MATLAB® 和 COM 自动化类型之间转换的详细信息,请参阅.NET 与 MATLAB 之间的数据转换规则。所有 MATLAB Compiler SDK™ COM 组件都包含对 MWFlags 对象的引用,该对象可以在对象级别修改数据转换规则。该类包含以下属性和方法:

Property ArrayFormatFlags As MWArrayFormatFlags

ArrayFormatFlags 属性控制数组格式(作为矩阵或元胞数组)以及这些规则对嵌套数组的应用。MWArrayFormatFlags 类是一个通过 MWFlags 类实例访问的不可创建类。此类包含六个属性:

Property InputArrayFormat As mwArrayFormat

mwArrayFormat 类型的属性控制作为输入参数传递给 MATLAB Compiler SDK 类方法的数组的格式。默认值为 mwArrayFormatMatrix。下表列出了此标志指示的行为。

输入数组的数组格式规则

行为

mwArrayFormatAsIs

根据列出的默认转换规则转换数组.NET 与 MATLAB 之间的数据转换规则

mwArrayFormatCell

将所有数组强制转换为元胞数组。输入标量或数字数组参量被转换为元胞数组,每个元胞都包含相应索引的标量值。

mwArrayFormatMatrix

将所有数组强制转换为矩阵。当遇到一个 Variant 数组的输入参量(默认行为是将其转换为元胞数组)时,如果每个 Variant 都是单值,并且所有元素都是同质的并且属于数值类型,则数据转换器会将该数组转换为矩阵。如果无法进行此转换,则创建一个元胞数组。

Property InputArrayIndFlag As Long

此属性控制在哪个级别应用由嵌套数组的 InputArrayFormat 属性设置的规则(传递 Variant 数组,并且该数组的每个元素本身都是一个数组)。对于 varargin 参数,无需修改此标志。对于 varargin 单元,数据转换代码会自动将此标志的值增加 1,从而将 InputArrayFormat 标志应用于 varargin 参数的每个单元。默认值为 0

Property OutputArrayFormat As mwArrayFormat

mwArrayFormat 类型的属性控制作为输出参数传递给类方法的数组的格式。默认值为 mwArrayFormatAsIs。下表列出了此标志指示的行为。

输出数组的数组格式规则

行为

mwArrayFormatAsIs

根据列出的默认转换规则转换数组.NET 与 MATLAB 之间的数据转换规则

mwArrayFormatMatrix

将所有数组强制转换为矩阵。当遇到输出元胞数组参量时(默认行为将其转换为 Variant 数组),如果每个元胞都是单值,并且所有元素都是同质的且属于数值类型,则数据转换器会将此数组转换为包含简单数值数组的 Variant。如果这种转换不可能实现,则创建一个 Variant 数组。

mwArrayFormatCell

将所有输出数组强制转换为 Variant 数组。输出标量或数字数组参量被转换为 Variant 数组,每个 Variant 包含相应索引的标量值。

Property OutputArrayIndFlag As Long

此属性类似于 InputArrayIndFalg 属性,因为它控制对嵌套数组应用 OutputArrayFormat 属性设置的规则的级别。与输入情况一样,对于 varargout 参数,此标志会自动增加 1。此标志的默认值为 0

Property AutoResizeOutput As Boolean

此标志仅适用于 Excel® 范围。当方法调用的目标输出是 Excel 工作表中的单元格范围,并且在调用时不知道输出数组的大小和形状时,将此标志设置为 True 会指示数据转换代码调整每个 Excel 范围的大小以适合输出数组。调整大小是相对于每个提供范围的左上角进行的。此标志的默认值为 False

Property TransposeOutput As Boolean

将此标志设置为 True 会转置输出参量。当处理来自 COM 组件上的方法调用的输出参数时,此标志很有用,其中 MATLAB 函数将输出作为行向量返回,并且您想要将数据放入列中。此标志的默认值为 False

Property DataConversionFlags As MWDataConversionFlags

DataConversionFlags 属性控制在需要类型强制时如何处理输入变量。MWDataConversionFlags 类是一个通过 MWFlags 类实例访问的不可创建类。此类包含以下属性:

Property CoerceNumericToType As mwDataType

此属性将所有数字输入参量转换为一种特定的 MATLAB 类型。当 Visual Basic® 代码中维护的变量是不同类型(例如 LongInteger 等)并且传递给编译的 MATLAB 代码的所有变量都必须是双精度数时,此标志很有用。此属性的默认值为 mwTypeDefault,它使用.NET 与 MATLAB 之间的数据转换规则

PropertyDateBias As Long

此属性设置执行 COM 到 MATLAB 数字日期转换的日期偏差。该属性的默认值为 693960,表示 COM Date 类型和 MATLAB 数字日期之间的差异。此标志允许已执行数字日期增加 693960 的现有 MATLAB 代码不加改变地与 COM 组件一起使用。要使用此类代码处理日期,请将此属性设置为 0

此示例使用数据转换标志来重塑从 MATLAB 函数编译的方法的输出,该方法产生长度未知的输出向量。

function p = myprimes(n)
if length(n)~=1, error('N must be a scalar'); end
if n < 2, p = zeros(1,0); return, end
p = 1:2:n;
q = length(p);
p(1) = 2;
for k = 3:2:sqrt(n)
    if p((k+1)/2)
        p(((k*k+1)/2):k:q) = 0;
    end
end
p = (p(p>0));

此函数生成 0 到 n 之间的所有质数的行向量。假设该函数包含在名为 myclass 的类中,该类包含在名为 mycomponent 组件中,版本为 1.0。该子程序以 Excel 范围和 Double 作为输入,并将生成的质数放入提供的范围内。尽管您希望以列格式输出,但 MATLAB 函数会生成行向量。它还会产生未知数量的输出,并且您不想截断任何输出。要处理这些问题,请将 TransposeOutput 标志和 AutoResizeOutput 标志设置为 True。在前面的示例中,Visual Basic CreateObject 函数创建了必要的类。此示例对 aClass 变量使用了显式类型声明。与前面的示例一样,此函数假定 MWInitApplication 先前已被调用。

Sub GenPrimes(R As Range, n As Double)
    Dim aClass As mycomponent.myclass
    
    On Error GoTo Handle_Error
    Set aClass = New mycomponent.myclass
    aClass.MWFlags.ArrayFormatFlags.AutoResizeOutput = True
    aClass.MWFlags.ArrayFormatFlags.TransposeOutput = True
    Call aClass.myprimes(1, R, n)
    Exit Sub
Handle_Error:
    MsgBox (Err.Description)
End Sub

Property InputDateFormat As mwDateFormat

此属性将作为输入参数传递的日期转换为 MATLAB Compiler SDK 类上的方法调用。默认值为 mwDateFormatNumeric。该标志指示的行为如下表所示。

输入日期的转换规则

行为

mwDateFormatNumeric

按照列出的规则将日期转换为数值.NET 与 MATLAB 之间的数据转换规则

mwDateFormatString

将输入日期转换为字符串。

PropertyOutputAsDate As Boolean

此属性将输出参量作为日期处理。默认情况下,作为编译的 MATLAB 函数的输出参数的数字日期被传递为 Double,需要按 COM 日期偏差(693960)减少并强制转换为 COM 日期。将此标志设置为 True 可转换所有 Double 类型的输出值。

ReplaceMissing As mwReplaceMissingData

此属性是一个枚举,可以有两个可能的值:mwReplaceNaNmwReplaceZero

要将输入参数引用的空元胞视为零,请将值设置为 mwReplaceZero。要将输入参数引用的空元胞视为 NaN(非数字),请将值设置为 mwReplaceNaN

默认情况下,该值为 mwReplaceZero

Sub Clone(ppFlags As MWFlags)

创建 MWFlags 对象的副本。

参数

参量类型描述

ppFlags

MWFlags

引用接收副本的未初始化的 MWFlags 对象

返回值

备注

Clone 分配一个新的 MWFlags 对象并创建该对象内容的深层副本。在需要单独的对象而不是现有对象引用的共享副本时,请调用此函数。