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

22次观看(最近30天)
Alan Aw
Alan Aw 2019年12月11日
回答: Shrinidhi KR on 7 May 2020
你好,我试图计算一个平均值 Python MATLAB中的数字向量。为了澄清,我正在使用Python,但是正在尝试通过在Python环境中运行MATLAB来依靠某些MATLAB特定功能。我在用 matlab.engine 去做这个:
%%%%%%(来自我的Python脚本)%%%%%%;
% Simple MATLAB experiment
进口numpy为NP
!pip安装matlab
进口matlab.engine
eng = matlab.engine.start_matlab()
data = np.Arange(5)
data_list = data.tolist()
Eng.Workspace ['foo'] = data_list
Eng.eval(“平均(foo)”
我在最后一行不断遇到以下错误:
“ file/applications/matlab_r2018b.app/toolbox/matlab/datafun/mean.m,第127行,在平均无效的数据类型中。首先参数必须是数字或逻辑的。”
To my understanding, this is owing to MATLAB somehow not recognizing the type of objects stored in data_list 什么时候 data_list 正在移植到引擎工作区(AS foo )。我尝试了(1)指定 dtype 创建对象时 数据 , and (2) removing data.tolist() 和移植 数据 直接,但两种方法都无法解决问题。(方法2产生另一个错误, “ TypeError:无支金宝app撑的Python数据类型:numpy.ndarray”
这里有人可以帮助解决问题吗?提前致谢!

答案(1)

Shrinidhi KR
Shrinidhi KR on 7 May 2020
修改代码如下:
进口numpy为NP
进口matlab.engine
eng = matlab.engine.start_matlab()
data = np.Arange(5)
data_list = data.tolist()
Eng.Workspace ['D'] = eng.cell(data_list)
Eng.Workspace ['foo'] = eng.eval('cellfun(@double,d)'
print(eng.eval(“平均(foo)”))
data_list 传递给MATLAB工作区是Python列表数据类型,该数据类型不能与 mean MATLAB的功能,因此引发了一个错误,说它期望 数字或逻辑值
它可以通过 将列表转换为单元格数组,然后使用CellFun函数将其转换为双数字数据类型 然后可以将其传递给均值函数。

下载188bet金宝搏


Release

R2018B

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!