基本上我有一个像这样的旋转矩阵:
% rot = [ cos(theta) sin(theta) 0;
% -sin(theta) cos(theta) 0;
% 0 0 1];
除了theta是1xN,所以我创建了以下怪物:
rot = zeros(3,3,SIZE);
rot(1,1,:) = cos(theta);
rot(1,2,:) = sin(theta);
rot(2,1,:) = -sin(theta);
rot(2,2,:) = cos(theta);
rot(3,3,:) = ones(1,SIZE);
现在,我有一个1x3xN矩阵,我需要对每个1x3列向量进行右矩阵乘法,并沿着长度为N的维度使用相应的3x3旋转矩阵。
我有一些想法,这可能与bsxfun有关吗?但我没有成功搞清楚......
答案 0 :(得分:3)
所以你有一个大小为R
的矩阵= [3 3 N],你想要乘以1x3xN
向量V
(大概是一个theta对应于一页的V) 。这意味着您希望第二维上的总和。溶液
result = squeeze(sum(bsxfun(@times, R, V), 2));
第一个乘法元素(bsxfun
负责沿着第一个维度的神奇扩展),然后求和第二个维度(矩阵乘法会做什么),然后squeeze
出单个元素提供3xN
结果的第二维。