MATLAB中Python数值向量均值的计算

2024-04-20 03:04:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在MATLAB中计算Python数值向量的平均值。为了澄清,我使用的是Python,但是我试图通过在Python环境中运行MATLAB来依赖一些特定于MATLAB的函数。我用matlab.engine来做这个:

##### (From my Python script) #####
# Simple MATLAB experiment
import numpy as np
!pip install matlab
import matlab.engine
eng = matlab.engine.start_matlab()

data = np.arange(5)
data_list = data.tolist()
eng.workspace['foo'] = data_list
eng.eval('mean(foo)')

在最后一行之后,我不断遇到以下错误:

“文件/Applications/MATLAB R2018b.app/toolbox/MATLAB/datafun/mean.m,第127行,表示无效数据类型。第一个参数必须是数字或逻辑。“

据我所知,这是由于当data_list被移植到引擎工作区时(如foo),MATLAB不知何故无法识别存储在data_list中的对象类型。我尝试过(1)在创建对象数据时指定dtype,以及(2)删除data.tolist()并直接移植data,但这两种方法都不能解决问题。(方法2产生另一个错误,“TypeError:不支持的Python数据类型:numpy.ndarray公司“

我使用的是matlabr2018b和python3.6。你知道吗

有人能帮忙排除故障吗?提前谢谢!你知道吗


Tags: 方法importnumpydatafoo错误npmean
1条回答
网友
1楼 · 发布于 2024-04-20 03:04:57

调用MATLAB引擎函数时,列表将转换为单元格。你知道吗

When you pass Python® data as input arguments to MATLAB® functions, the MATLAB Engine for Python converts the data into equivalent MATLAB data types.

如文件所述here。你知道吗

您可以在MATLAB中确认数据类型为cell

>>> eng.eval('class(foo)')
'cell'

现在您知道了数据类型,只需转换数据:

>>> eng.eval('mean(cell2mat(foo))')
2.0

相关问题 更多 >