MATLAB来Python数据类型映射
当调用Python时®MATLAB函数,®将MATLAB数据转换为最能表示Python语言数据的类型。
传递标量值到Python
MATLAB输入参数类型- |
产生的Python |
例子 |
---|---|---|
|
|
在MATLAB中使用Python数值变量 |
|
|
Z =复(1,2);py.cmath.polar (z) ans =没有属性的Python元组。(2.23606797749979, 1.1071487177940904) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在MATLAB中使用Python str变量 |
|
|
py.list({字符串(丢失),“价值”})
ans =没有属性的Python列表。(没有,“价值”) |
|
|
|
结构 |
|
在MATLAB中使用Python dict变量 |
Python对象- |
|
|
函数处理 |
|
将Python函数传递给Python map函数 |
将向量传递给Python
MATLAB输入参数类型- |
生成的Python类型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
传递矩阵和多维数组Python
Python语言提供了访问内存缓冲区的协议,例如存储在MATLAB数组中的数据。MATLAB为MATLAB数组实现了此Python缓冲区协议,以便您可以直接从Python代码读取MATLAB数组,在与MATLAB相同的进程中运行,而无需复制数据。
许多Python函数直接使用来自Python的MATLAB数组,而不将其转换为本机Python类型。有些函数可能需要特定的类型,例如numpy.ndarray
,或者可能修改数组中的数据。这些函数可以接受MATLAB数组并将数据复制到所需的类型。如果您没有传递所需的类型,其他函数可能会显示错误。要将数据传递给这些函数,首先从MATLAB数据创建所需的Python类型,然后将其传递给Python函数。例如,创建arrayp
来传递给需要类型数据的Python函数numpy.array
类型:
P = py.numpy.array(magic(3))
p = Python ndarray: 8 1 6 3 5 7 4 9 2使用details函数查看Python对象的属性。使用double函数转换为MATLAB数组。
Python中不支持MATLAB稀疏数组。金宝app看到不支金宝app持的MATLAB类型.
故障排除参数错误
如果Python函数需要特定的Python多维数组类型,例如numpy.ndarray
,然后MATLAB会显示一条消息,提示如何继续。如果问题可能是由于传递了一个矩阵或多维数组作为参数,那么请执行以下操作。
查看Python函数的文档,找出参数的预期类型。
在MATLAB中创建该类型的Python对象,并将其传递给Python函数。
例如,假设以下代码返回一个错误。
A = [1 2;3 4];py.pyfunc (a)
如果文件pyfunc
指定期望的类型为numpy.ndarray
,然后试试这个转换:
py.pyfunc (numpy.ndarray (a))
如果错误仍然存在,则通过检查Python异常中的其他信息来确定根本原因。
自动转换Python类型MATLAB类型
MATLAB自动将这些从Python函数返回的数据类型转换为MATLAB类型。要转换其他类型,请参见显式转换Python类型到MATLAB类型.
Python返回类型,如Python中显示的 |
结果MATLAB类型-标量 |
---|---|
|
|
|
复杂的 |
|
|
|
|
所有其他Python类型- |
Python对象- |
显式转换Python类型MATLAB类型
如果Python函数的输出实现了Python缓冲区协议,例如numpy.ndarray
,且为数值型或逻辑型,则MATLAB显示:
实际的Python类型
基础数据
相应的MATLAB转换函数。使用此函数将Python对象完全转换为MATLAB数组。
使用这些MATLAB函数将Python数据类型转换为MATLAB类型。
返回类型或协议,在MATLAB中显示 |
MATLAB转换函数 |
例子 |
---|---|---|
|
|
在MATLAB中使用Python str变量 |
|
|
|
|
|
|
对象与 |
|
py.help (“datetime.date.__str__”)
datetime中wrapper_descriptor的帮助。日期:datetime.date。__str__= __str__(self, /) Return str(self). D = py.datetime.date(...int32 (2020), int32 (3), int32 (4));char (d)
Ans = '2020-3-04' |
|
|
|
|
|
|
|
|
|
你可以转换 |
数值函数: |
在MATLAB中使用Python数值变量例如,在MATLAB中使用Python整数数组类型。 |
|
|
在MATLAB中使用Python列表变量 |
映射协议;例如, |
|
在MATLAB中使用Python dict变量 |
例如,Python函数返回此数组p
:
p = Python ndarray: 8 1 6 3 5 7 4 9 2使用details函数查看Python对象的属性。使用double函数转换为MATLAB数组。
你可以把它转换成MATLAB矩阵P
通过键入:
P = double(P)
P = 3×3 8 1 6 3 5 7 4 9 2
的Python属性的特定信息p
类型:
细节(p)
带有属性的py.numpy.ndarray句柄:T: [1×1 py.numpy.ndarray。Ndarray] base: [1×1 py.]没有一个类型] ctypes: [1×1 py.numpy.core._internal._ctypes] data: [1×3 py.memoryview] dtype: [1×1 py.numpy.dtype[float64]] flags: [1×1 py.numpy.flagsobj] flat: [1×1 py.numpy.flatiter] imag: [1×1 py.numpy.ndarray] itemsize: [1×1 py.int] nbytes: [1×1 py.int] ndim: [1×1 py.int] real: [1×1 py.numpy.ndarray] shape: [1×2 py.tuple] size: [1×1 py.int] strides: [1×2 py.tuple] Methods, Events, Superclasses
如果Python模块在其__doc__
属性,然后MATLAB链接到该信息。
不支金宝app持的MATLAB类型
Python不支持这些MATLAB类型。金宝app
多维
字符
或细胞
数组结构数组
稀疏阵列
分类
,表格
,容器。地图
,datetime
类型MATLAB的对象
meta.class
(py
.类
)