piecewise matrix multiplication with vector
6 次查看(过去 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 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!