Asked by ays ays
on 2 Jul 2019

i have this question it says that i have a matrix A [m,n]

and i need to get the amount of the first row and the last row for example if i have a matrix like this :

7 5 3

9 1 8

10 1 3

i wanna get the first row ==> 7+5+3 =15

and the last row ==>10+1+3=14

and after that i need to do 15+14=29 ( as first row + the last row)

so the problem i have that i cant use sum function but i can use for

can anyone help me with this ?

Answer by Jon
on 2 Jul 2019

Accepted Answer

If you think about how basic matrix, vector multiplication works, you can see that you can sum rows of a matrix by multiplying by a column vector of ones. You can sum selected elements of a column vector by premultplying by a row vector consisting of zeros and ones (with zeros for the elements that you don't want to include in the sum). Putting these ideas together in your case gives

y = [1 0 1]*A*[1;1;1]

You could also accomplish what you want using MATLAB's indexing abilities along with the sum function. Note that A(1,:) means row 1, every column of A. Similarly A(3,:) means row 3 every column of A

y = sum(A(1,:)) + sum(A(3,:))

ays ays
on 2 Jul 2019

i am sorry i am kinda weak in english trying my best and i am solving exams to get better at matlab so the question is saying i have a matrix i dont know how many rows in it or columns and in the question it says also i cant use sum

so thats why i need other way if i could use sum i will have done long time ago

and again i am sorry too weak in english >_<

Jon
on 2 Jul 2019

So if the problem is that you want the sum of the elements of the first and last rows of an arbitrary matrix A without using the sum function, you could generalize the approach I gave earlier using:

[m,n] = size(A)

y = [1 1]*[A(1,:);A(m,:)]*ones(n,1)

ays ays
on 2 Jul 2019

thx

Sign in to comment.

Answer by Jan
on 2 Jul 2019

Edited by Jan
on 2 Jul 2019

S = sum(x)

is equivalent to

S = 0;

for k = 1:numel(x)

S = S + x(k);

end

If you want to, you can call this as a subfunction. Or you can collect the 2 sums in one loop:

Sfirst = 0;

Slast = 0;

[s1, s2] = size(matrix);

Then run a loop over the columns of the matrix and accumulate the 2 sums.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.