piecewise matrix multiplication with vector

조회 수: 3 (최근 30일)
mb
mb 2015년 1월 11일
댓글: mb 2015년 1월 11일
Hi,
I am trying to minimize a function s = b - Yr in a vectorized form. Y is a projection matrix and r the coordinates. I would like to multiply the first two rows of Y with the first vector in r and then the two second ones in y with the second one in r. Now this works:
b = zeros(2,1);
Y = [1 2 3 ; 0 0 1 ]
r = [0 0 1]';
s =
-3
-1
Now how could I extend this? Like this:
Y = [1 2 3 ; 0 0 1 ; 4 5 6 ; 0 0 1]
r = [0 0 1 ; 0 0 1]';
Such that I have the same form answer as in b variable? like b = zeros(2,90);
The variable Y i make like this:
angles = -88:2:90
for i= 1:size(angles,2)
if i== 1
Y = [cos(angles(1,i)) 0 sin(angles(1,i)); 0 1 0];
else
Y = vertcat(Y,[cos(angles(1,i)) 0 sin(angles(1,i)); 0 1 0]);
end
end
And in the minimization I try to find the z coordinate in r variable: r = [0 0 x]
Many thanks for any help!

채택된 답변

dpb
dpb 2015년 1월 11일
Sometimes it's just easiest to write a loop...
j=0;
for i=1:2:length(Y)
j=j+1;;
p(:,j)=Y(i:i+1,:)*r(:,j);
end
s=b-p; % objective function
With some thought this could be written w/ accumarray or the like but the above is straightforward and easy to debug. If it turns out the loop is a bottleneck verified by profiler, then I'd worry about it.
  댓글 수: 1
mb
mb 2015년 1월 11일
thanks dpb! this will not be in the cost function so this will be perfect!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by