我有一个python代码,我希望在其中使用Matlab函数操作列表并将其作为新列表返回给python。
为了测试expect
,我尝试了以下内容:
matlab.engine
import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd('~/Documents/someDirWithMatlabFunctions/')
a = testFnc(2)
看起来像
testFnc.m
当我运行python代码时,我得到以下输出:
function [list2] = testFnc(list)
for i = 1:numel(list)
list(i) = 3*list(i)
end
list2 = list;
end
我的第一个问题是>>> a = eng.testFnc(4)
>>> a
12L
>>> print a
12
是什么?此外,当我尝试将列表作为参数传递时:
12L
然后引用Matlab函数的行,其中发生乘法,如错误发生的位置。 我曾预料到这可能是一个问题,因为列表和矩阵是不同的东西。如何在Matlab中正确传递变量?
答案 0 :(得分:3)
什么是12L?
Python支持任意精度整数,这意味着您能够表示比普通32位或64位整数类型更大的数字。 L
告诉您何时文字属于此类型而不是常规整数。
注意,L
仅出现在解释器输出中,它只是表示类型。这就是为什么它在打印时不显示的原因。
如何在Matlab中正确传递变量?
matlab Python包提供了数组类来表示MATLAB数值类型的数组作为Python变量,以便MATLAB数组可以在Python和MATLAB之间传递。
The documentation goes on to give lots of helpful examples关于如何从MATLAB传递变量。
要将数据传回MATLAB,我建议使用numpy / scipy。 This answer explains more about how to do that.