我已经尝试了这两种替代方案
objective = lambda A, x : (np.dot(x.T ,np.dot(A, x)))[0,0]
objective = lambda A, x : (np.matrix(x).T * np.matrix(A) * np.matrix(x))[0,0]
我的算法在primary中运行了5秒钟,在secondary中运行了14秒。
使用MATLAB只需要2秒。
我想使用Numpy,但显然我需要一种改进这个糟糕结果的方法。如何获得更快的二次形式矩阵、向量乘积?
注意:我对代码进行了分析,发现这个lambda函数耗费了很多时间。 改进:我仅删除了原生的Ubuntu scipy和numpy包,然后使用以下安装程序进行安装。
sudo pip install numpy
sudo apt-get install libatlas-base-dev gfortran
sudo pip install scipy
sudo apt-get install libpng-dev libfreetype6-dev
sudo pip install matplotlib
我稍微提高了性能,但仍然低于Matlab。
[0, 0]
是什么意思? - Bi Ricocython
并没有改进np.dot
。 - yardsale8