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 commentaires

Adam
Adam le 13 Oct 2014
Can you give a simple example of inputs A and B?
Dale
Dale le 14 Oct 2014
Modifié(e) : Dale le 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

Connectez-vous pour commenter.

 Réponse acceptée

Guillaume
Guillaume le 14 Oct 2014

1 vote

Use bsxfun to perform your division
a = squeeze(sum(sum(bsxfun(@rdivide, A, B))));

Plus de réponses (2)

Adam
Adam le 14 Oct 2014

1 vote

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.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by