Summation and array indexes

1 view (last 30 days)
Dale
Dale on 13 Oct 2014
Answered: Roger Stafford on 14 Oct 2014
I am trying to write a function for an optimisation routine that requires the (total) summation of a matrix divided element by element by a second matrix, where the second matrix has a third dimension returning a vector the size of that third dimension.
i.e. something along the lines of a(1:n) = sum(sum(A./B(:,:,1:n))
which doesn't work. Any ideas?
Thanks
  2 Comments
Adam
Adam on 13 Oct 2014
Can you give a simple example of inputs A and B?
Dale
Dale on 14 Oct 2014
Edited: Dale on 14 Oct 2014
Hi Adam
A is a m x m matrix, and B is a m x m x n matrix.
I am aware I could do this with a loop (below), was just seeing if it is possible with direct indexing...
for i = 1:n
a(i) = sum(sum(A./B(:,:,i)))
end

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 14 Oct 2014
Use bsxfun to perform your division
a = squeeze(sum(sum(bsxfun(@rdivide, A, B))));

More Answers (2)

Adam
Adam on 14 Oct 2014
c = bsxfun( @rdivide, A, B );
a = squeeze( sum( sum( c ) ) );
should give the answer you want. Obviously you could do it in one line if you prefer.

Roger Stafford
Roger Stafford on 14 Oct 2014
sum(A(:))./sum(sum(B,1),2)

Community Treasure Hunt

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

Start Hunting!