类 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
。下表列出了此标志指示的行为。
输入数组的数组格式规则
值 | 行为 |
---|---|
| 根据列出的默认转换规则转换数组.NET 与 MATLAB 之间的数据转换规则。 |
| 将所有数组强制转换为元胞数组。输入标量或数字数组参量被转换为元胞数组,每个元胞都包含相应索引的标量值。 |
| 将所有数组强制转换为矩阵。当遇到一个 |
Property InputArrayIndFlag As Long
此属性控制在哪个级别应用由嵌套数组的 InputArrayFormat
属性设置的规则(传递 Variant
数组,并且该数组的每个元素本身都是一个数组)。对于 varargin
参数,无需修改此标志。对于 varargin
单元,数据转换代码会自动将此标志的值增加 1,从而将 InputArrayFormat
标志应用于 varargin
参数的每个单元。默认值为 0
。
Property OutputArrayFormat As mwArrayFormat
mwArrayFormat
类型的属性控制作为输出参数传递给类方法的数组的格式。默认值为 mwArrayFormatAsIs
。下表列出了此标志指示的行为。
输出数组的数组格式规则
值 | 行为 |
---|---|
| 根据列出的默认转换规则转换数组.NET 与 MATLAB 之间的数据转换规则。 |
| 将所有数组强制转换为矩阵。当遇到输出元胞数组参量时(默认行为将其转换为 |
| 将所有输出数组强制转换为 |
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
。该标志指示的行为如下表所示。
输入日期的转换规则
值 | 行为 |
---|---|
| 按照列出的规则将日期转换为数值.NET 与 MATLAB 之间的数据转换规则。 |
| 将输入日期转换为字符串。 |
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
对象的副本。
参数
参量 | 类型 | 描述 |
---|---|---|
|
| 引用接收副本的未初始化的 |
返回值
无
备注
Clone 分配一个新的 MWFlags
对象并创建该对象内容的深层副本。在需要单独的对象而不是现有对象引用的共享副本时,请调用此函数。