提问人:Zanam 提问时间:6/30/2023 最后编辑:phoZanam 更新时间:6/30/2023 访问量:77
Python 版本的 matlab 代码非常慢
Python version of matlab code is very slow
问:
我有以下Matlab代码(我的生产代码数组大小约为):8766 x 8766
% Define z1 and z2
z1 = rand(6, 6); % Random 6x6 matrix - real life size 8766 x 8766
z2 = rand(6, 7); % Random 6x7 matrix - real life size 8766 x 8767
% Solve for z3
z3 = z1 \ z2; % real life size 8766 x 8767
% Display z3
disp(z3);
在 python 中等价于此:
import numpy as np
# Define z1 and z2
z1 = np.random.rand(6, 6) # Random 6x6 matrix
z2 = np.random.rand(6, 7) # Random 6x7 matrix
# Solve for z3 (matrix division)
z3 = np.linalg.solve(z1.T @ z1, z1.T @ z2)
但是,如果 python 版本是单数矩阵,则不起作用。即使矩阵是奇异的,Matlab 版本也可以工作。
以下替代解决方案非常缓慢:
z3 = np.linalg.pinv(z1) @ z2
那么,对我来说,解决方案是什么?
令人惊讶的是,在 2023 年,Python 仍然没有在这方面击败 Matlab。
编辑:比已经使用的方法慢scipy.linalg.lstsq
答: 暂无答案
评论
z3 = z1 / z2
是错误的,这将是解决方案。也许你是故意的?你能展示你的计时代码吗?有了这些尺寸,就可以立即找到解决方案。也许您正在使用更大的阵列?z3 * z2 = z1
z2 \ z1
z3
z2 * z3 = z1
z3
z3 * z1 = z2