在Python调用MATLAB的性能必然会给一些性能降低,我可以通过重写(很多)在Python代码避免。然而,这对我来说不是一个现实的选择,但它让我很烦恼,效率的巨大损失在于从numpy数组到MATLAB double的简单转换。提高numpy的数组转换为MATLAB双
我谈论从数据1以下转换到data1m,其中
data1 = np.random.uniform(low = 0.0, high = 30000.0, size = (1000000,))
data1m = matlab.double(list(data1))
这里matlab.double来自Mathworks公司拥有MATLAB软件包/引擎。第二行代码在我的系统上需要20秒,这对于转换来说似乎太多了,除了使数字“可食用”MATLAB以外,其他任何操作都没有任何作用。
所以基本上我正在寻找一个伎俩相反给here的一个转换MATLAB输出在Python工作。
也许编写自己的C++代码可能会有所帮助。将数据从python转换为C++ shoudl很容易,例如, cython,然后你可以使用MATLAB的mex API来创建一个MATLAB变量,并为python(现在的C++)数据分配相同的内存指针。这两者肯定是非常快的(因为它只是创建对象并分配指针),并且应该是比IO上的中继更优雅的解决方案。 –
也许这会有所帮助:https://github.com/kmatzen/matlab-python它是一个matlab C接口的包装,它应该给体面的速度。 – max9111
尽管Cython看起来很有趣,但现在转到C++有点太令人望而生畏了。我想这取决于实施这一努力的回报。切换到mex API时,matlab功能本身是否还有可能会改善性能? – 5Ke