主要内容

MATLABPython数据类型的映射

当调用Python时®MATLAB函数,®将MATLAB数据转换为最能代表Python语言的数据类型。

将标量值传递给Python

MATLAB输入参数类型-
仅标量值

结果Pythonpy。类型

例子

双重的
仅有一个的

浮动

在MATLAB中使用Python数值变量

复杂的仅有一个的
复杂的双重的

复杂的

z =复杂(1、2);py.cmath.polar (z)
ans=不带属性的Python元组。(2.23606797749979,1.1071487177940904)

int8
uint8
int16
uint16
int32

int

uint32
int64
uint64

int
长的(版本2.7)

浮动(“nan”)

浮动(“inf”)

一串标量
字符矢量

str

在MATLAB中使用Python str变量

< >失踪价值一串

没有一个

py.list({字符串(缺少),“价值”})
ans=不带属性的Python列表。[无,'值']

必然的

布尔

结构

dict

在MATLAB中使用Python dict变量

Python对象-派克.类型

类型

函数句柄@派克.单元.函数,只对Python函数有效

单元.函数

将Python函数传递给Python映射函数

通过向量Python

MATLAB输入参数类型-
1.——- - - - - -N矢量

产生的Python类型

双重的

array.array (' d ')

仅有一个的

array.array (f)

int8

array.array('b')

uint8

array.array('B')

int16

array.array('h')

uint16

array.array('H')

int32

array.array('i')

uint32

array.array('I')

int64(Wind万博1manbetxows上的Python 2.7不支持)®)

array.array('q')

uint64(Wind万博1manbetxows上的Python 2.7不支持)

array.array('Q')

必然的

memoryview

字符矢量
一串标量

str

字符数组包含大于127的值(仅2.7版)

统一码

细胞矢量

元组

传递矩阵和多维数组Python

当您将实数值或逻辑数组传递给Python函数时,MATLAB会自动将数据转换为Python函数memoryview如果Python函数的输出实现Python缓冲协议,并且是实数值或逻辑输出,则MATLAB显示:

  • 实际的Python类型

  • 基础数据

  • 相应的MATLAB转换函数。使用此函数将Python对象完全转换为MATLAB数组。

例如,假设您在模块中调用Python函数pyModule返回一个类型为的变量pyType使用这些值:

p=PythonpyType: 8 1 6 3 5 7 4 9 2使用details函数查看Python对象的属性。使用双函数转换为MATLAB数组。

转换P一个MATLAB矩阵P类型:

P=双(P)
P=3×3816357492

如果需要有关的Python属性的特定信息P类型:

详情(p)
py。pyModule.pyType带有属性的句柄:T:[1×1 py。pyModule.pyType]基本类型:[1×1 py.NoneType]c类型:[1×1 py。pyModule.core.\u internal.\u ctypes]数据:[1×3 py.memoryview]数据类型:[1×1 py。pyModule.dtype]标志:pyModule.flagsobj]平的:[1×1 py。pyModule.flatiter]imag:[1×1 py。pyModule.pyType]itemsize:[1×1 py.int]n字节:[1×1 py.int]ndim:[1×1 py.int]real:[1×1 py。pyModule.pyType[1×2 py.]元组] size: [1×1 py.int] strides: [1×2 py.tuple] Methods, Events, Superclasses

如果Python模块在其__医生__属性,然后MATLAB链接到该信息。

使用Pythonmemoryview对象允许Python读取MATLAB数据而无需复制MATLAB数据。和有关信息。memoryview对象和缓冲区协议,在https://www.python.org/doc/.

Python不支持MATLAB复杂和稀疏数组。万博1manbetx看到不支万博1manbetx持的MATLAB类型.

参数错误的疑难解答

如果Python函数需要特定的Python多维数组类型,则MATLAB将显示一条消息,其中包含有关如何继续的提示。如果问题可能是由于将矩阵或多维数组作为参数传递所致,请执行以下操作。

  1. 检查Python函数的文档并找出参数的预期类型。

  2. 在MATLAB中创建一个该类型的Python对象,并将其传递给Python函数。

例如,假设以下代码返回错误。

a=[12;34];py.pyfunc(a)

如果pyfunc指定所需的类型为pyType,然后尝试此转换:

py.pyfunc (pyType(a) )

如果错误仍然存在,则通过检查Python异常中的附加信息来确定根本原因。

自动转换Python键入MATLAB类型

MATLAB自动将这些从Python返回的数据类型转换为MATLAB类型。要转换其他类型,请参见显式地将Python类型转换为MATLAB类型.

Python返回类型,如Python中所示

生成的MATLAB类型-标量

浮动

双重的

复杂的

复杂的双重的

int(仅限2.7版)。

对于Python版本3.xint,必须显式转换。请参阅显式地将Python类型转换为MATLAB类型.

int64

布尔

必然的

所有其他Python类型-类型

Python对象-派克.类型

显式转换Python键入MATLAB类型

使用这些MATLAB函数将Python数据类型转换为MATLAB类型。

Python返回类型或协议,如MATLAB中所示

MATLAB转换函数

例子

py.str(3.x版)

一串
字符

在MATLAB中使用Python str变量

py.str(2.7版)

一串
字符
uint8

py.unicode

一串
字符

反对__str__方法

字符

py.help ('datetime.date.\uuu str\uuuuu')
datetime.date:datetime.date.\uuuuu str\uuuu=\uuuuuu str\uuu(self,/)返回str(self)。
d=py.datetime.date(...int32(2020)、int32(3)、int32(4));字符(d)
ans = ' 2020-3-04 '

py.bytes

uint8

py.int

双重的

int64

皮朗

双重的

int64

py.array.array

您可以转换py.array.array您想要的MATLAB类型的任何格式。

数字
双重的
仅有一个的
int8
uint8
int16
uint16
int32
uint32
int64
uint64

在MATLAB中使用Python数值变量,例如,在MATLAB中使用Python整数数组类型。

协议序列;例如,py.listpy.tuple

细胞

在MATLAB中使用Python列表变量
在MATLAB中使用Python元组变量

映射协议;例如,py.dict

结构

在MATLAB中使用Python dict变量

无支万博1manbetx撑MATLAB类型

Python不支持这些MATLAB类型。万博1manbetx

  • 多维字符细胞数组

  • 结构阵列

  • 复数、标量整数或数组

  • 稀疏阵列

  • 分类,
    表格,
    集装箱。地图,
    datetime类型

  • MATLAB对象

  • meta.class(派克.)

相关的话题