Massive matrix, tridiagonal, ones()

1 回表示 (過去 30 日間)
Anastasia Zistatsis
Anastasia Zistatsis 2021 年 2 月 15 日
I need to transform this matrix, taking the three diagonal lines that have numbers and make them their own matrices. My matrix, however, is 124x124. I do not want to write a 1x123 matrix out that has 122 of the same number and 1 zero. Is there a way use ones() for this?
  2 件のコメント
Adam Danz
Adam Danz 2021 年 2 月 15 日
What 3 diagonal lines?
The description of the data and the description of the goal are not clear.
A demo using a smaller matrix would likely help.
Anastasia Zistatsis
Anastasia Zistatsis 2021 年 2 月 15 日
編集済み: Adam Danz 2021 年 2 月 15 日
[2 13 0 0 0 0;
1 2 13 0 0 0;
0 1 2 13 0 0;
0 0 1 2 13 0;
0 0 0 1 2 13];
These are the three diagonals I was talking about: [ 13 13 13 13 13 0], zeros(1,5)*2, and [0 1 1 1 1]
For a much larger matrix, is there a function in matlab that can make it easier to type out the first and third vectors shown above?

サインインしてコメントする。

回答 (1 件)

Jan
Jan 2021 年 2 月 15 日
A = [2 13 0 0 0 0;
1 2 13 0 0 0;
0 1 2 13 0 0;
0 0 1 2 13 0;
0 0 0 1 2 13];
d1 = diag(A, 0) % [2 2 2 2 2],'
d2 = diag(A, 1) % [13 13 13 13 13].'
d3 = diag(A, -1) % [1 1 1 1].'
I do not understand, how you want to get "[13 13 13 13 13 0]" (especially the trailing 0), "zeros(1,5)*2" (zeros times anything is still zeros?), and [0 1 1 1 1] (again the leading zero)?
  1 件のコメント
Anastasia Zistatsis
Anastasia Zistatsis 2021 年 2 月 16 日
It's part of the answer matrix that I should have put in my question! Diag() helps though, thank you!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by