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

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 Comments

Um, what you claim to produce the lower triangle is not valid. For example:
A = randi(5,[3,4])
A = 3×4
5 3 4 5 4 3 2 5 3 5 1 5
What you claim to have done, thus
A(:, 1:end-1)
ans = 3×3
5 3 4 4 3 2 3 5 1
That merely extracts the first three columns of A, which is not at all a lower triangular form. This is what tril and triu give:
tril(A)
ans = 3×4
5 0 0 0 4 3 0 0 3 5 1 0
triu(A)
ans = 3×4
5 3 4 5 0 3 2 5 0 0 1 5
Is that not what you want to produce? If not, then what do you really wish to see, and why are triu or tril not adequate for your purposes? We cannot really help you unless you are clear about what you are doing, and perhaps even why tril and triu are not of value.
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 ?
@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.

Sign in to comment.

Answers (1)

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

Categories

Find more on Linear Algebra in Help Center and File Exchange

Asked:

on 24 Feb 2022

Commented:

on 27 Feb 2022

Community Treasure Hunt

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

Start Hunting!