# how to get sum of elements of lower right triangular matrix.? i have tried this one, can anyone please correct this one

34 views (last 30 days)
function [sum] = halfsum( a )
[m, n]=size(a); sum=0;
for i= m:-1:1
for j=n:-1:1
if i==j || j<=i
sum=sum+a(i,j);
end
end
end
end
output: halfsum([1 2 3;4 5 6;7 8 9])
ans =
34

Andrei Bobrov on 2 Dec 2016
out = sum(a(rot90(tril(ones(size(a))),1)>0));

Image Analyst on 2 Dec 2016
Don't use sum() as the name of your variable! You're destroying a built-in function. I wish we could make this a sticky on the forum because it happens so often, probably more often than people confusing (row,column) with (x,y).
Use tril and fliplr like this:
m = magic(9) % Sample matrix.
lowerRight = fliplr(tril(fliplr(m)))
theSum = sum(lowerRight(:))

if possible can you please correct my code in "for loop" ..?
Image Analyst on 4 Dec 2016
The j loop should start at i, not n. And use theSum instead of sum. And the "if" is unnecessary.

Ibrahim Abouemira on 19 May 2019
Hello,
The function takes as input at the most two-dimensional array. It computes the sum of the elements of that are in the lower right triangular part(counter-diagonal elements).
For example, if the input is [1 2; 3 4; 5 6; 7 8], then the function would return 21.