Formula for setting Diagonals
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Eric Fleming
el 29 de Feb. de 2016
Comentada: Walter Roberson
el 29 de Feb. de 2016
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 comentarios
Respuesta aceptada
Walter Roberson
el 29 de Feb. de 2016
"A = spdiags(B,d,A) replaces the diagonals specified by d with the columns of B. The output is sparse."
2 comentarios
Walter Roberson
el 29 de Feb. de 2016
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);
Más respuestas (0)
Ver también
Categorías
Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!