主要内容

MATLABPython 之间传递数据

当您将 MATLAB® 数据返回到 Python® 时,MATLAB Engine API for Python 将数据转换为等效的 Python 数据类型。MATLAB 引擎还将传入的 Python 数据转换为 MATLAB 数据类型。

将数据从 MATLAB 传递到 Python

当您将数据从 MATLAB 传递到 Python 时,无论是直接传递还是作为 Python 中的 MATLAB 函数的输出传递,MATLAB 都会将数据转换为等效的 Python 数据类型。

MATLAB 输出参量类型
(除非另有说明,否则均为标量)

生成的 Python 数据类型

数值数组

matlab 数值数组对象
请参阅MATLAB 数组作为 Python 变量

double
single

float

复数(任意数值类型)

complex

int8, int16, int32, int64
uint8, uint16, uint32, uint64

int

NaN

float('nan')

Inf

float('inf')

logical

bool

char 数组(1×NN×1)

str

string

str

string 数组(1×NN×1)

strlist

struct

dict

元胞数组(1×NN×1)

list

datetime

datetime.datetime

duration

datetime.timedelta

datetime 数组

numpy.datetime64 数组
如果 NumPy 模块在 Python 环境中不可用,MATLAB 会将 datetime 数组转换为 matlab.object

duration 数组

numpy.timedelta 数组
如果 NumPy 模块在 Python 环境中不可用,MATLAB 会将 duration 数组转换为 matlab.object

table
timetable

pandas.DataFrame
仅支持表中有一层嵌套。如果 Python Pandas 模块在 Python 环境中不可用,MATLAB 会将 tabletimetable 转换为 matlab.object

dictionary

matlab.dictionary.

MATLAB 句柄对象(例如 containers.Map 类型)

matlab.object
MATLAB 返回对 matlab.object 的引用,而不是返回对象本身。您不能在 MATLAB 会话之间传递 matlab.object

MATLAB 值对象(例如 categorical 类型)

matlab.object
可以将值对象传递给 MATLAB 函数,但是不能创建或修改值对象。

不支持的 MATLAB 数据类型

除了表中注明的例外情况外,MATLAB 不会将以下 MATLAB 数据类型转换为 Python 数据类型:

  • char 数组(M×N

  • string 数组(M×N

  • 元胞数组(M×N

  • 稀疏数组

  • struct 数组

  • 非 MATLAB 生成的对象(例如 Java® 对象)

  • 函数句柄

将数据从 Python 传递到 MATLAB

当您将数据从 Python 传递到 MATLAB 时,无论是直接传递还是作为 Python 中的 MATLAB 函数的输入参量传递,MATLAB 引擎都会将数据转换为等效的 MATLAB 数据类型。

Python 数据类型

生成的 MATLAB 数据类型
(除非另有说明,否则均为标量)

matlab 数值数组对象

数值数组
请参阅MATLAB 数组作为 Python 变量

支持缓冲区协议的 Python 对象,例如 memoryviewarray.array 或 NumPy ndarray

数值数组

float

double

complex

复数 double

int

int64

float('nan')

NaN

float('inf')

Inf

bool

logical

str

char

bytearray

uint8 数组

bytes

uint8 数组

list

cell 数组

set

cell 数组

tuple

cell 数组

dict

struct
dict 键必须符合特定规范。请参阅 在 MATLAB 中使用 Python 字典

datetime.datetime
numpy.datetime64 标量

datetime
请参阅How MATLAB Handles Datetime and Duration Types in Python

datetime.timedelta
numpy.timedelta64 标量

duration
请参阅How MATLAB Handles Datetime and Duration Types in Python

numpy.datetime64 数组

datetime 数组
请参阅How MATLAB Handles Datetime and Duration Types in Python

numpy.timedelta64 数组

duration 数组
请参阅How MATLAB Handles Datetime and Duration Types in Python

pandas.DataFrame

table
仅支持表中有一层嵌套。请参阅 Use MATLAB Tables and Timetables in Python

具有 datetime 列的 pandas.DataFrame

timetable
仅支持时间表中有一层嵌套。请参阅 Use MATLAB Tables and Timetables in Python

matlab.dictionary

dictionary
matlab.dictionary 键和值必须符合特定规范。MATLAB 使用此表中的映射转换 matlab.dictionary 对象中的数据,但例外情况是 str 数据会转换为 string。请参阅 在 MATLAB 中使用 Python 字典

dict 之外的支持映射协议的 Python 对象(例如 collections.OrderedDict

dictionary

不支持的 Python 数据类型

除了表中注明的例外情况外,MATLAB 不会将以下 Python 数据类型转换为 MATLAB 数据类型:

  • Python 类 (module.type) 对象

  • None 对象

另请参阅

主题