首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python数值向量在MATLAB中的计算平均值

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

Stack Overflow用户
提问于 2019-12-11 07:25:07
回答 1查看 125关注 0票数 2

我试图在MATLAB中计算、Python、数值向量的平均值。为了澄清,我使用Python,但通过在Python环境中运行MATLAB来尝试依赖于一些特定于MATLAB的函数。我正在使用matlab.engine来完成以下操作:

代码语言:javascript
复制
##### (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移植到引擎工作区(作为foo)时,不知何故不识别存储在data_list中的对象的类型。我尝试过(1)在创建对象数据时指定dtype,(2)直接删除data.tolist()并移植data,但这两种方法都没有解决这个问题。(方法2生成一个不同的错误,"TypeError:不支持的Python数据类型:numpy.ndarray“)。

我正在使用MATLAB R2018b和Python3.6。

这里有人能帮忙排除故障吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-11 09:24:26

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

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

记录在案的这里

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

代码语言:javascript
复制
>>> eng.eval('class(foo)')
'cell'

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

代码语言:javascript
复制
>>> eng.eval('mean(cell2mat(foo))')
2.0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59280687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档