我必须反演一个大型稀疏矩阵(50000 X 12000)。它最初以numpy.ndarray的形式存储,矩阵的大小约为3.5GB。我已经尝试过使用numpy.linalg.pinv来转换这个矩阵,但是它崩溃了jupyter笔记本内核。将此numpy.ndarray转换为scipy.sparse.csr_matrix (稀疏矩阵格式)是可行的,但我不知道有任何函数可以计算csr_matrix的伪逆。
如何求大型稀疏矩阵的伪逆?
我用了两张图片。我使用C++在opencv中读取矩阵并大步进入矩阵。现在,我想逆一个图像矩阵。我用的是invM1 = M1.inv(CV_LU);(where invM1 and M1 both are matrix)。我得到了
Opencv错误:断言失败。
你能帮我解决这个错误是如何发生的,这个错误意味着什么,以及问题的潜在解决方案吗?
我需要在一个列表中solve超过上千个矩阵。但是,我得到了错误Lapack routine dgesv: system is exactly singular。我的问题是,我的输入数据是非奇异矩阵,但是在对这些矩阵进行计算之后,其中一些得到了奇异。但是,一个包含数据子集的可重复的示例是不可能的,因为它会很长(我已经尝试过了)。这里是我问题的一个基本例子(A是经过一些计算后的矩阵,R是我需要做的下一个计算):
A=matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), nrow=4)
R = solve(diag(4)-A)
你有什么想法如何“解决”这个问题,也许其
当我尝试使用Matlab的inv()操作计算矩阵求逆时:
A = rand(10,10);
b = rand(10,1);
C = inv(A);
D = C*b;
我在最后一行得到以下警告: INV速度慢且不准确。使用A\b表示INV(A)*b,使用b/A表示b*INV(A)。
我可以将上面的代码改为:
A = rand(10,10);
b = rand(10,1);
C = inv(A);
D = A\b;
现在我没有得到警告,但我不认为这个解决方案更好。
注意:我需要存储矩阵A的逆以及inv(A)*c。另外,在我的实际文件中,矩阵A的大小可以是5000 x 5000,甚至更大。
在效