# Write a function called halfsum that takes as input an at most two-dimensional matrix A and computes the sum of the elements of A that are in the diagonal or are to the right of it. example, the input is [1 2 3; 4 5 6; 7 8 9],the ans is 26

327 ビュー (過去 30 日間)
Deepanshu Parihar 2015 年 5 月 28 日
function s = halfsum(A)
[row col] = size(A);
if row ~= col
error('Expecting a square matrix here people...');
end
s = 0;
for ii = 1:row
for jj = ii:col
s = s + A(ii,jj);
end
end
##### 14 件のコメント表示非表示 13 件の古いコメント
Nadeem U Rehman 2020 年 12 月 10 日
thank you @Rik

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

### 回答 (10 件)

Buwaneka Dissanayake 2020 年 6 月 21 日
function summa = halfsum(M)
[a b] = size(M);
if a>1
for n = 1:a;
for m = 1:b;
if n>m;
M(n,m) = 0;
summa = sum(sum(M));
end
end
end
else
summa = sum(M);
end
end
##### 1 件のコメント表示非表示 なし
Arshdeep Singh 2020 年 8 月 9 日
can you explain the logic of this function

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

Joseph Cheng 2015 年 5 月 28 日
input = [1 2 3;4 5 6;7 8 9]
and not
input = [1 2 3 4 5 6 7 8 9]
##### 1 件のコメント表示非表示 なし
Joseph Cheng 2015 年 5 月 28 日
which if you read carefully the problem statement and the code the input is a 3x3 square matrix. the input you provided it was a 1x9 array.

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

Sean de Wolski 2015 年 5 月 28 日
f = @(x)sum(sum(triu(x))) % make function
f(magic(3)) % use it
##### 0 件のコメント表示非表示 -1 件の古いコメント

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

Pragyan Dash 2020 年 9 月 19 日
%this worked for me. Happy to help!
function summa = halfsum(M)
[row col] = size(M)
summa = 0;
for ii = 1:row;
for jj = 1:col;
if jj >= ii;
summa = summa + M(ii, jj);
end
end
end
##### 1 件のコメント表示非表示 なし
THIERNO AMADOU MOUCTAR BALDE 2020 年 12 月 19 日
very clean thanks

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

Srishti Saha 2018 年 4 月 7 日
This code works perfectly for me:
%function to compute sum of lower most right side triangle in an X*2 matrix
function u = halfsum(P)
u1 = P(end:-1:1, 1:end);
u2 = triu(u1);
u = sum(u2(:));
end
##### 0 件のコメント表示非表示 -1 件の古いコメント

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

Ajith Bharadwaj 2020 年 2 月 3 日
function summa = halfsum(A)
[row col] = size(A);
for ii = 1:row
for jj = ii:col
summa = summa + A(ii,jj);
end
end
##### 5 件のコメント表示非表示 4 件の古いコメント
Amit Jain 2020 年 11 月 3 日
I hope this clears your doubt. You did not tell function what to if there is n ==1 means there is column vector. I have made this correction. Now function works fine. Thanks

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

ERTIZA HOSSAIN SHOPNIL 2020 年 5 月 21 日
function summa=halfsum(A)
t=triu(A);
list=sum(t);
s=0;
for n=list
s=s+n;
end
summa=s;
end
##### 3 件のコメント表示非表示 2 件の古いコメント
Rik 2020 年 8 月 24 日
That means you will have to copy another answer to cheat on your homework. Or think yourself.

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

saurav Tiwari 2020 年 6 月 25 日
function summa=halfsum(a)
[m,n]=size(a)
for i=1:m
j=1:n
x(i)=sum(a(i,j))
end
summa=sum(x)
end
##### 2 件のコメント表示非表示 1 件の古いコメント
Walter Roberson 2020 年 6 月 25 日
Incorrect code. This calculates sums of an entire row, not the sum of the diagonal and right of the diagonal.

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

youssef boudhaouia 2020 年 7 月 27 日
A solution with double For-loop:
function summa=halfsum(M)
summa=0;
s=size(M);
for i=1:s(1)
for j=1:s(2)
if j>=i
summa=summa+M(i,j);
else
summa=summa;
end
end
end
##### 4 件のコメント表示非表示 3 件の古いコメント
Walter Roberson 2020 年 8 月 4 日
You do not need the if condition if you use
for j=i:s(2)

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

Abdul Quadir Khan 2020 年 10 月 18 日
function summa = halfsum(x)
[row,col] = size(x);
allsum=0;
for n=1:row
for c=n:col
allsum=x(n,c)+allsum;
end
end
summa=allsum;

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

### Community Treasure Hunt

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

Start Hunting!