How to use CROSS with 3x1 Matrix on a 3xN Matrix
3 次查看(过去 30 天)
显示 更早的评论
Hello,
I have 3x1 Matrix and want to do the CROSS of each element of a 3xN Matrix, to receive a 3xN Matrix as results.
Can I do this without a loop?
Thanks in advance!
0 个评论
采纳的回答
James Tursa
2018-12-14
编辑:James Tursa
2018-12-14
Unfortunately, the cross( ) function does not auto-expand the dimensions of the operands. So you would have to manually do this or use a loop. E.g., if your vector is v and your matrix is M, then
result = cross(repmat(v,1,size(M,2)),M);
更多回答(1 个)
Bruno Luong
2018-12-14
For my own use I have written this function
%%
function c = cross_dim1(a,b)
% Calculate cross product along the first dimension
c = zeros(size(a));
c(3,:) = a(1,:).*b(2,:)-a(2,:).*b(1,:);
c(1,:) = a(2,:).*b(3,:)-a(3,:).*b(2,:);
c(2,:) = a(3,:).*b(1,:)-a(1,:).*b(3,:);
end
If you have R2016b or ulterior it will do auto expansion.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!