Summation and array indexes

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 Commenti

Adam
Adam il 13 Ott 2014
Can you give a simple example of inputs A and B?
Dale
Dale il 14 Ott 2014
Modificato: Dale il 14 Ott 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

Accedi per commentare.

 Risposta accettata

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

Più risposte (2)

Adam
Adam il 14 Ott 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.

Community Treasure Hunt

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

Start Hunting!

Translated by