piecewise matrix multiplication with vector
조회 수: 3 (최근 30일)
이전 댓글 표시
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!
댓글 수: 0
채택된 답변
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!