MATLAB Answers

ays ays
0

having problem to solve somthing in matlab

Asked by ays ays
on 2 Jul 2019
Latest activity Commented on by Jon
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 ?

  0 Comments

Sign in to comment.

2 Answers

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,:))

  5 Comments

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)

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.

  1 Comment

Jon
on 2 Jul 2019
I was thinking the OP was specifically looking for a solution that did not utilize either the sum function or looping, which is why I suggested the matrix multiply approach.

Sign in to comment.