creating a repeating diagonal matrix

조회 수: 17 (최근 30일)
Josue Lujan
Josue Lujan 2020년 9월 8일
편집: Muhammad Fiaz 2022년 1월 24일
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
Muhammad Fiaz
Muhammad Fiaz 2022년 1월 24일
Can you do it?
Please I also need help..

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

채택된 답변

John D'Errico
John D'Errico 2020년 9월 8일
편집: John D'Errico 2020년 9월 8일
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
Josue Lujan
Josue Lujan 2020년 9월 8일
yes i wanted to repeat the sequence on the main diaginal thank you!
Muhammad Fiaz
Muhammad Fiaz 2022년 1월 24일
편집: Muhammad Fiaz 2022년 1월 24일
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]

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

추가 답변 (0개)

카테고리

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!

Translated by