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

Adam
Adam 2014년 10월 13일
Can you give a simple example of inputs A and B?
Dale
Dale 2014년 10월 14일
편집: Dale 2014년 10월 14일
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

댓글을 달려면 로그인하십시오.

 채택된 답변

Guillaume
Guillaume 2014년 10월 14일

1 개 추천

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

추가 답변 (2개)

Adam
Adam 2014년 10월 14일

1 개 추천

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 2014년 10월 14일

1 개 추천

sum(A(:))./sum(sum(B,1),2)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

2014년 10월 13일

답변:

2014년 10월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by