# working with large matrices

조회 수: 44 (최근 30일)
Bram Stegeman . 2019년 3월 6일
댓글: Stephan Koschel . 2020년 3월 17일
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표시 이전 댓글 수: 2숨기기 이전 댓글 수: 2
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.

댓글을 달려면 로그인하십시오.

### 채택된 답변

Munish Raj 2019년 3월 18일
Hello Bram,
You could look at implementing Tall Arrays.
The documentation link can be found here.

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!