主要内容

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

类 MWFlags

R2026b

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® 代码中维护的变量是不同类型(例如 Long、Integer 等)并且传递给编译的 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

此属性是一个枚举,可以有两个可能的值:mwReplaceNaN 和 mwReplaceZero。

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

默认情况下,该值为 mwReplaceZero。

Sub Clone(ppFlags As MWFlags)

创建 MWFlags 对象的副本。

参数

参量类型描述

ppFlags

MWFlags

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

返回值

无

备注

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