How can I get the upper triangular matrix without using triu()?

50 ビュー (過去 30 日間)
Jessica Avellaneda
Jessica Avellaneda 2022 年 2 月 24 日
コメント済み: Voss 2022 年 2 月 27 日
I was able to get the lower triangular matrix by using A(:, 1:end-1), A being my function + argumented matrix but I need to get the upper triangular matrix.
The matrix is Aug= a matrix 3x3, b= 1x3. (A = [Aug b])
  3 件のコメント
Jessica Avellaneda
Jessica Avellaneda 2022 年 2 月 27 日
Yes, you are correct. However, I cannot use tril or triu for this assignment. is there any other way I can get lower and upper triangular matrices ?
Voss
Voss 2022 年 2 月 27 日
@Jessica Avellaneda Please see my answer, which does not use triu() except to show that the result is correct, which is a part you can omit.

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

回答 (1 件)

Voss
Voss 2022 年 2 月 25 日
編集済み: Voss 2022 年 2 月 27 日
You can set all elements below the main diagonal to zero, e.g., using a for loop:
% A matrix, pick any size you want:
A = randn(5,6);
disp(A);
-0.2986 -0.0896 3.0956 -0.0877 -0.1211 -0.8411 -1.2512 -0.7189 -0.2814 1.0478 -0.5774 1.0418 0.3396 0.8059 1.3927 0.8229 -0.7386 -0.3184 0.4703 0.3028 0.7384 -0.1581 0.4213 0.2998 -0.4320 1.3279 -2.2420 -1.0304 0.4372 0.4579
% zero out the elements below the diagonal to make it upper-triangular:
A_ut = A;
for ii = 1:size(A,2)
A_ut(ii+1:end,ii) = 0;
end
disp(A_ut);
-0.2986 -0.0896 3.0956 -0.0877 -0.1211 -0.8411 0 -0.7189 -0.2814 1.0478 -0.5774 1.0418 0 0 1.3927 0.8229 -0.7386 -0.3184 0 0 0 -0.1581 0.4213 0.2998 0 0 0 0 0.4372 0.4579
% make sure this gives the same result as triu(A):
isequal(A_ut,triu(A))
ans = logical
1

カテゴリ

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