Python与MATLAB之间的数据传递包括两方面的内容,即Python传递数据给MATLAB和MATLAB传递数据给Python。[大谦MATLAB,dqmatlab点com]
从Python传递数据给MATLAB
将Python数据作为输入变量传递给MATLAB函数时,引擎将数据转换为对等的MATLAB数据类型。标量类型之间的映射关系如表1-2所示,数组类型之间的映射关系如表1-3所示。
表1-2 Python类型向MATLAB标量类型映射
| Python输入变量类型 | 生成的MATLAB数据类型 |
|---|---|
| float | double |
| complex | complex double |
| int | int64 |
| long(Python 2.7) | int64 |
| float(nan) | NaN |
| float(inf) | Inf |
| bool | logical |
| str | char |
| unicode(Python 2.7) | char |
| dict | dict |
表1-3 Python容器向MATLAB数组类型映射
| Python输入变量类型 – 容器 | 生成的MATLAB数据类型 |
|---|---|
| 数值数组对象 | 数值数组 |
| byte数组 | uint8数组 |
bytes(Python 3.x)
bytes(Python 2.7) |
uint8数组 char数组 |
| 列表 | 元胞数组 |
| set | 元胞数组 |
| 元组 | 元胞数组 |
MATLAB传递数据给Python
将MATLAB数据作为输入变量传递给Python时,引擎将数据转换为对等的Python数据类型。标量类型之间的映射关系如表1-4所示,数组类型之间的映射关系如表1-5所示。
表1-4 MATLAB标量类型向Python类型映射
| MATLAB输出变量类型 | 生成的Python数据类型 |
|---|---|
| double | float |
| single | float |
| complex(任何数值类型) | complex |
| int8 | int |
| uint8 | int |
| int16 | int |
| uint16 | int |
| int32 | int |
| uint32 | int(Python 3.x), long(Python 2.7) |
| int64 | int(Python 3.x), long(Python 2.7) |
| uint64 | int(Python 3.x), long(Python 2.7) |
| NaN | float(nan) |
| Inf | float(inf) |
| logical | bool |
| 返回给Python 3.x的char类型 | str |
| 返回给Python 2.7的char类型 | str(当MATLAB char值小于或等于127)
unicode(当MATLAB char值大于127) |
| 结构 | dict |
| MATLAB句柄对象 | matlab.object |
表1-5 MATLAB数组类型向Python类型映射
| MATLAB输出变量类型 | 生成的Python数据类型 |
|---|---|
| 数值数组 | MATLAB数值数组对象 |
字符数组(1*N或N*1)(Python 3.x) |
str |
字符数组(1*N或N*1) (Python 2.7) |
str(当MATLAB char值小于或等于127)
unicode(当MATLAB char值大于127) |
| 元胞数组的行或列 | 列表 |