Cross Product of an Array

25 visualizaciones (últimos 30 días)
Hollis Williams
Hollis Williams el 22 de Abr. de 2019
Comentada: James Tursa el 22 de Abr. de 2019
I have an array of size 3 x 100 and I basically want to create a new array where I take each column vector in the array and compute the cross product with the same vector each time to create another array of size 3 x 100, so in this case I take every vector and form the cross product with [0 0 1]'. What would be the easiest way of doing this?

Respuesta aceptada

James Tursa
James Tursa el 22 de Abr. de 2019
Editada: James Tursa el 22 de Abr. de 2019
M = your 3xN matrix
v = your 3x1 vector
result = cross(M,repmat(v,1,size(M,2)));
  10 comentarios
Hollis Williams
Hollis Williams el 22 de Abr. de 2019
Yes, I was using the size() command but made a typo, it is working now. I have created three 1 x 100 arrays, is it possible to put these together into one 3 x 100 array? So if A,B,C are all 1 x 100 arrays, I would need
A
B
C
James Tursa
James Tursa el 22 de Abr. de 2019
result = [A;B;C];

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 22 de Abr. de 2019
Editada: Matt J el 22 de Abr. de 2019
This way avoids repmatting, which may be desirable when N is large.
M = your 3xN matrix
v = your 3x1 vector
result=xprodmat(v)*M./vecnorm(M);
where
function A=xprodmat(a)
%Matrix representation of a cross product
%
% A=xprodmat(a)
%
%in:
%
% a: 3D vector
%
%out:
%
% A: a matrix such that A*b=cross(a,b)
if length(a)<3, error 'Input must be a vector of length 3'; end
ax=a(1);
ay=a(2);
az=a(3);
A=zeros(3);
A(2,1)=az; A(1,2)=-az;
A(3,1)=-ay; A(1,3)=ay;
A(3,2)=ax; A(2,3)=-ax;
end
  1 comentario
Hollis Williams
Hollis Williams el 22 de Abr. de 2019
I don't think repmatting is the thing which is most computationally costly in my code but I will bear this in mind to see if I need to save time later on, thanks a lot.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by