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 件のコメント

Dr. Muhammad Fiaz
Dr. 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 日

0 投票

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!
Dr. Muhammad Fiaz
Dr. Muhammad Fiaz 2022 年 1 月 24 日
編集済み: Dr. 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 件)

カテゴリ

ヘルプ センター および 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!

Translated by