working with large matrices
    8 次查看(过去 30 天)
  
       显示 更早的评论
    
I have to work with large matrices (e.g. A = 8000 x 100.000, all non-zero values).
I want to calculate T= ((A'*A) + lamda*speye(n))\(A'*A); with lamda =e.g. 1-e-3. 
I have installed 64 gb ddr and as expected I run out of memory (also when I introduce a threshold and force A to be sparse, and then create sparse(A) and sparse (A') and try to calculate T. 
Are there alternative ways to calculate T without out of memory issues? 
3 个评论
  Stephan Koschel
 2020-3-17
				You are only interested in the diagonals of a matrix multiplication?
I would implement an iteration over the diagonal elements and load the corresponding columns and rows from the two matrices. The entry on the diagonal becomes something like sum(current_row .* current_col)
The iteration could slow down the process, but you only need to load two vectors into memory.
采纳的回答
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Performance and Memory 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!