1

乘以每列1x3xN矩陣基本上我有一個旋轉矩陣,如下所示:MATLAB:通過對應3x3xN旋轉矩陣

% rot = [ cos(theta) sin(theta) 0; 
%   -sin(theta) cos(theta) 0; 
%   0    0   1]; 

除了theta是1×N個,所以建立以下怪物:

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列向量右對齊矩陣乘以其相應的3x3旋轉矩陣沿着長度N的維度。

我有一些noti在這可能與bsxfun?但是,我還沒有在計算出來的成功......

回答

3

所以,你有大小的一個矩陣R = [3 3 N],並且要乘以1x3xN矢量V(大概一個THETA對應於一個頁面V)。這意味着你想要第二維的總和。溶液

result = squeeze(sum(bsxfun(@times, R, V), 2)); 

第一乘法元件(bsxfun照顧沿着第一維度的神奇膨脹),然後求和所述第二尺寸(這是一個矩陣乘法會做),然後squeeze出單第二尺寸給出3xN的結果。

+0

括號......? – Brian

+0

@ B-Brock - 有彈性的鍵盤。感謝您的發現。固定。 – Floris

+1

太棒了!謝謝!你讓它聽起來很容易理解...... :)有時候bsxfun對我來說真的是一個謎...... – Brian