Formula for setting Diagonals
조회 수: 1 (최근 30일)
이전 댓글 표시
Basically, I'm creating a very large matrix (1000000 x 1000000) in which I will do operations such as finding eigenvalues on. Only certain diagonals are used, and they all follow simple formulas.
The main diagonal is just A(i,i) = 2 * i
I figured that I need to use a sparse matrix, but I don't know how to set the diagonal efficiently. A while loop that iterates through the diagonals and sets each element takes an EXTREMELY long time
Is there something along the lines of diag(2*i) or some effective formulated way to this?
댓글 수: 0
채택된 답변
Walter Roberson
2016년 2월 29일
"A = spdiags(B,d,A) replaces the diagonals specified by d with the columns of B. The output is sparse."
댓글 수: 2
Walter Roberson
2016년 2월 29일
You cannot give spdiags a formula or function handle: it would have to be the actual (full) vector of values
d = 0;
B = (1:size(A,1)-abs(d)).'*2;
A = spdiags(B, d, A);
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!