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!