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

youngtableaux

我正在尝试在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行,平均数据类型无效。第一个参数必须为数字或逻辑。”

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

我正在使用MATLAB R2018b和Python 3.6。

有人可以帮助解决问题吗?提前致谢!

保罗

当您调用MATLAB引擎函数时,该列表将转换为单元格。

将Python®数据作为输入参数传递给MATLAB®函数时,用于Python的MATLAB引擎会将数据转换为等效的MATLAB数据类型。

作为记录在这里

您可以在MATLAB中确认数据类型为单元格

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章