creating a repeating diagonal matrix
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Josue Lujan
am 8 Sep. 2020
Bearbeitet: Muhammad Fiaz
am 24 Jan. 2022
I'm trying to create a diagonal matrix with the following sequence on the main diagonal line where v is the vector v=[4,1,0,1] to get the following matrix
[4 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 4 0 ...]
but I want it to repeat the same sequence over an over again for a 100 by 100 matrix how would I be able to do this?
1 Kommentar
Akzeptierte Antwort
John D'Errico
am 8 Sep. 2020
Bearbeitet: John D'Errico
am 8 Sep. 2020
You want to repeat that sequence on the main diagonal?
v = [4 1 0 1];
A = diag(repmat(v,1,25));
That is, use repmat to replicate the sequece 25 times. Then use diag to create the associated diagonal matrix.
If you wanted the matrix to be a sparse matrix, you would use spdiags to form the matrix.
v = [4;1;0;1];
A = spdiags(repmat(v,25,1),0,100,100);
In the second form, I used spdiags. We can visualize the matrix as created using spy.
spy(A)

A dot is shown for all non-zero elements. You can even visualize those zero elements on the diagonal, because no dots were shown there.
2 Kommentare
Muhammad Fiaz
am 24 Jan. 2022
Bearbeitet: Muhammad Fiaz
am 24 Jan. 2022
Can we repeat matrix is tri-diagnally?
e.g
[1 2 3 4]
I want to make it [1 2 0 0 0 0 ; 3 4 0 0 0 0 ; 0 0 1 2 0 0 ; 0 0 3 4 0 0 ; 0 0 0 0 1 2; 0 0 0 0 3 4]
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!