主要内容

数据转换规则

这个主题描述了数据转换规则MATLAB®编译器™组件。这些组件是双接口微软®支持数据类型兼容自动化的COM对象金宝app。

请注意

自动化(以前称为OLE自动化)是一种技术,允许软件包暴露他们独特的功能脚本工具和其他应用程序。自动化使用组件对象模型(COM),但是可以实现独立于其他OLE特性,如就地激活。

当一个方法被调用MATLAB编译器组件,输入参数转换为MATLAB内部数组格式和传递给编译后的MATLAB函数。在函数退出时,输出参数从MATLAB内部数组格式转换到COM自动化类型。

COM客户机通过所有编制MATLAB函数作为输入和输出参数的类型变体。的COM变体类型是一个联盟的几个简单的数据类型。一个类型变体变量可以存储一个变量的简单类型,以及这些值的数组。

Win32应用程序编程接口(API)为创建和操纵提供了许多功能变体在C / c++, Visual Basic®提供本地语言支持这种类型。金宝app

请注意

这个讨论的数据指的是两个变体变体数据类型。变体c++名称和吗变体在Visual Basic中相应的数据类型。

看到Visual Studio®文档定义和API支持COM金宝app变体年代。变体变量是自我描述和存储类型代码作为一个内部的结构。

下表列出了变体支持的类型代码金宝appMATLAB编译器组件。

变体类型代码支持金宝app

变体类型代码
(C / c++)
C / c++类型 变体类型代码
(Visual Basic)
视觉BasicType 定义
VT_EMPTY - - - - - - vbEmpty - - - - - -

未初始化变体

VT_I1 字符 - - - - - - - - - - - -

签署1字节字符

VT_UI1

无符号字符

vbByte 字节

无符号1字节字符

VT_I2 vbInteger 整数

签署两字节整数

VT_UI2 无符号短 - - - - - - - - - - - -

无符号两字节整数

VT_I4 vbLong

签署了4字节整数

VT_UI4 无符号长 - - - - - - - - - - - -

无符号4字节整数

VT_R4 浮动 vbSingle

IEEE®4字节浮点值

VT_R8 vbDouble

IEEE eight-byte浮点值

VT_CY CY+ vbCurrency 货币

货币价值(64位整数,扩展到10000年)

VT_BSTR + vbString 字符串

字符串值

VT_ERROR 范围+ vbError - - - - - -

一个HRESULT(签署四字节整数代表一个COM错误代码)

VT_DATE 日期+ vbDate 日期

Eight-byte浮点值表示日期和时间

VT_INT int - - - - - - - - - - - -

带符号整数;相当于类型int

VT_UINT 无符号整型 - - - - - - - - - - - -

无符号整数;相当于类型无符号整型

VT_DECIMAL 小数+ vbDecimal - - - - - -

96位无符号整数(由),由一个变量扩展10的力量

VT_BOOL VARIANT_BOOL+ vbBoolean 布尔

两字节布尔值(0 xffff = True;0 x0000 = False)

VT_DISPATCH IDispatch * vbObject 对象

IDispatch *指针指向一个对象

VT_VARIANT 变体+ vbVariant 变体

变体(只能指定如果结合VT_BYREFVT_ARRAY)

<任何东西> | VT_ARRAY - - - - - - - - - - - - - - - - - -

位结合VT_ARRAY与任何基本类型来声明一个数组

<任何东西> | VT_BYREF - - - - - - - - - - - - - - - - - -

位结合VT_BYREF与任何基本类型来声明作为参考价值

+表示windows类型。不是标准的C / c++的一部分。

下表列出了转换规则从MATLAB COM。

MATLABCOM变体转换规则

MATLAB数据类型 变体标量数据类型 变体数组数据类型 评论
细胞

1×1细胞转换为一个数组变体类型符合转换规则的MATLAB数据类型细胞的内容。

一个多维细胞转换为一个数组变体类型的VT_VARIANT | VT_ARRAY与每个数组成员符合的类型转换规则的MATLAB数据类型对应的细胞。

结构

VT_DISPATCH

VT_DISPATCH

一个MATLAB结构体被转换为一个数组MWStruct对象。(见类MWStruct(MATLAB编译器SDK))这个对象作为一个传递VT_DISPATCH类型。

字符

一个1×1字符矩阵转化成一个变体类型的VT_BSTR与字符串长度= 1。

一个1-by-L字符矩阵是假定在MATLAB代表一个特征向量的长度。这种情况下皈依变体类型的VT_BSTR用一个字符串长度= L。字符矩阵超过一行,或更高的维度转换的变体类型的VT_BSTR | VT_ARRAY。每个字符串转换为数组的长度1和对应于原始矩阵中的每个字符。

数组的字符不支持向量金宝app字符矩阵。通过一组特征向量,利用1-by-L单元阵列字符矩阵。

稀疏的

VT_DISPATCH

VT_DISPATCH

MATLAB稀疏被转换为一个数组MWSparse对象。(见类MWSparse(MATLAB编译器SDK))这个对象作为一个传递VT_DISPATCH类型。

一个真正的1×1双矩阵转换为一个变体类型的VT_R8。一个复杂的1×1双矩阵转换为一个变体类型的VT_DISPATCH

一个真正的多维矩阵转换为一个的两倍变体类型的VT_R8 | VT_ARRAY。一个复杂的多维矩阵转换为一个的两倍变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

一个真正的1×1单矩阵转换为一个变体类型的VT_R4。一个复杂的1×1个矩阵转换为一个变体类型的VT_DISPATCH

一个真正的多维矩阵转换为一个变体类型的VT_R4 | VT_ARRAY。一个复杂的多维矩阵转换为一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

int8

一个真正的1×1int8矩阵转化成一个变体类型的VT_I1。一个复杂的1×1int8矩阵转化成一个变体类型的VT_DISPATCH

一个真正的多维int8矩阵转化成一个变体V型T_I1 | VT_ARRAY。一个复杂的多维int8矩阵转化成一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

uint8

一个真正的1×1uint8矩阵转化成一个变体类型的VT_UI1。一个复杂的1×1uint8矩阵转化成一个变体类型的VT_DISPATCH

一个真正的多维uint8矩阵转化成一个变体类型的VT_UI1 | VT_ARRAY复杂多维。uint8矩阵转化成一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

int16

一个真正的1×1int16矩阵转化成一个变体类型的VT_I2。一个复杂的1×1int16矩阵转化成一个变体类型的VT_DISPATCH

一个真正的多维int16矩阵转化成一个变体类型的VT_I2 | VT_ARRAY。一个复杂的多维int16矩阵转化成一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

uint16

一个真正的1×1uint16矩阵转化成一个变体类型的VT_UI2。一个复杂的1×1uint16矩阵转化成一个变体类型的VT_DISPATCH

一个真正的多维uint16矩阵转化成一个变体类型的VT_UI2 | VT_ARRAY。一个复杂的多维uint16矩阵转化成一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

int32

一个1×1int32矩阵转化成一个变体类型的VT_I4。一个复杂的1×1int32矩阵转化成一个变体类型的VT_DISPATCH

一个多维int32矩阵转化成一个变体类型的VT_I4 | VT_ARRAY。一个复杂的多维int32矩阵转化成一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

uint32

一个1×1uint32矩阵转化成一个变体类型的VT_UI4。一个复杂的1×1uint32矩阵转化成一个变体类型的VT_DISPATCH

一个多维uint32矩阵转化成一个变体类型的VT_UI4 | VT_ARRAY。一个复杂的多维uint32矩阵转化成一个变体类型的VT_DISPATCH

复杂的数组传递给从编译使用MATLAB函数MWComplex类。(见类MWComplex)

函数处理

VT_EMPTY

VT_EMPTY

不支持金宝app

Java®

VT_EMPTY

VT_EMPTY

不支持金宝app

用户类

VT_EMPTY

VT_EMPTY

不支持金宝app

逻辑

VT_Bool

VT_Bool | VT_ARRAY

下表列出了转换规则从COM到MATLAB。

COM变体MATLAB转换规则

变体类型 MATLAB数据类型(标量或数组数据) 评论
VT_EMPTY

不适用

创建空数组。

VT_I1 int8
VT_UI1 uint8
VT_I2 int16
VT_UI2 uint16
VT_I4 int32
VT_UI4 uint32
VT_R4
VT_R8
VT_CY
VT_BSTR 字符

一个变体类型的VT_BSTR转换1-by-L MATLAB字符数组,L =要转换的特征向量的长度。一个变体类型的VT_BSTR | VT_ARRAY皈依1-by-L MATLAB单元阵列字符数组。

VT_ERROR int32
VT_DATE

1。变体日期被存储为双打从12月31日午夜开始,1899年。MATLAB日期被存储为双打从0/0/00就是。因此,一个变体0.0映射到一个MATLAB数值日期日期为693960.0。变体日期转换为MATLAB类型和693960.0增加了两倍。
2。变体日期可以选择性地转化为特征向量。看到数据转换的旗帜强制类型转换的更多信息。

VT_INT int32
VT_UINT uint32
VT_DECIMAL
VT_BOOL 逻辑
VT_DISPATCH

(不同)

IDispatch *指针的上下文中被他们点什么。对象必须支持类型与已知数据抽取和金宝app转换规则,或揭露一个通用的价值属性指向一个变体类型。数据从一个对象中提取转换基于特定的规则变体获得的。

目前,支持存在Exce金宝appl®范围对象以及MATLAB编译器类型MWStruct,MWComplex,MWSparse,MWArg

<任何东西> | VT_BYREF

(不同)

指针的任何基本类型处理根据他们所指向的规则。由此产生的MATLAB数组包含深度值的副本。

<任何东西> | VT_ARRAY

(不同)

多维变体数组转换为MATLAB多维数组,每个元素根据转换规则的基本类型。多维变体类型的数组VT_VARIANT | VT_ARRAY细胞转化为多维数组,每个单元转换根据特定类型的规则。