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 Kommentare

Adam
Adam am 13 Okt. 2014
Can you give a simple example of inputs A and B?
Dale
Dale am 14 Okt. 2014
Bearbeitet: Dale am 14 Okt. 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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Guillaume
Guillaume am 14 Okt. 2014

1 Stimme

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

Weitere Antworten (2)

Adam
Adam am 14 Okt. 2014

1 Stimme

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.

Kategorien

Gefragt:

am 13 Okt. 2014

Beantwortet:

am 14 Okt. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by