How to use CROSS with 3x1 Matrix on a 3xN Matrix
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marcus W
el 14 de Dic. de 2018
Comentada: Marcus W
el 16 de Dic. de 2018
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 comentarios
Respuesta aceptada
James Tursa
el 14 de Dic. de 2018
Editada: James Tursa
el 14 de Dic. de 2018
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);
Más respuestas (1)
Bruno Luong
el 14 de Dic. de 2018
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.
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!