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 comentarios

Adam
Adam el 13 de Oct. de 2014
Can you give a simple example of inputs A and B?
Dale
Dale el 14 de Oct. de 2014
Editada: Dale el 14 de Oct. de 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

Iniciar sesión para comentar.

 Respuesta aceptada

Guillaume
Guillaume el 14 de Oct. de 2014

1 voto

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

Más respuestas (2)

Adam
Adam el 14 de Oct. de 2014

1 voto

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.

Categorías

Preguntada:

el 13 de Oct. de 2014

Respondida:

el 14 de Oct. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by