我在使用函数求和的MATLAB算法中有一个函数.如doc中所述,该函数的输入必须是以下类型之一:
>向量
>矩阵
>多维阵列
我知道MATLAB网站上有functions和doc可以转换这些数据类型.问题是我没有修改算法的权限,只有我要发送到的算法.有没有办法在python中进行适当的更改,而不是在MATLAB中获取python数据来更改数据类型?
目前,我尝试将引擎中的MATLAB函数直接用于python.我不确定转换是否正常.
这是我的问题的MWE:
import matlab
import matlab.engine
myEngine = matlab.engine.start_matlab()
pythonData = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
pythonData = myEngine.cellstr(pythonData)
print('after cellstr()', pythonData)
pythonData = myEngine.cell2mat(pythonData)
print('after cell2mat()', pythonData)
matlabSum = myEngine.sum(pythonData)
print('sum:', matlabSum)
这是我的terminal的输出.
您会注意到cellstr并没有做太多事情,这很奇怪.有人对如何正确进行转换有想法吗?另外,总和不是477.总和是45.我很确定这是因为它将其转换为ASCII,这将导致[49,50,51,…]给出477.
由于matlab自动将列表转换为单元格,因此我尝试更改每个整数值,然后将engine.cell2mat直接使用到列表中,但出现此错误:
TypeError: array of MATLAB int64 type cannot be returned on this platform
到目前为止,我仍在尝试将python转换为上述MATLAB数据格式之一.我运行Python 2.7.