How to use CROSS with 3x1 Matrix on a 3xN Matrix
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
James Tursa
il 14 Dic 2018
Modificato: James Tursa
il 14 Dic 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);
Più risposte (1)
Bruno Luong
il 14 Dic 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.
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!