Matrix operation without for-loop

Hello,
I have a position vector q=[x y z].' I want to compute the following: Q=q*q.' . The dimension of Q is 3x3 . I'd like to do this operation for multiple position vectors at once, say q1=[x1 y1 z1] and q2=[x2 y2 z2], resulting in a Q1 and Q2 matrix. The outcome may be a 3D matrix, in this case with dimension 3x3x2. Is there a way to this without using a for-loop? Thanks in advance.
Jeroen

 Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 16 Avr 2013
Modifié(e) : Andrei Bobrov le 16 Avr 2013

0 votes

q = reshape(1:6,[],2); % let your vectors as [q1,q2]
s = size(q,1);
Q = bsxfun(@times,reshape(q,s,1,[]),reshape(q,1,s,[]));
or
qq = repmat(permute(q,[1 3 2]),1,s);
Q = qq.*permute(qq,[2 1 3]);

1 commentaire

Jeroen van Gemert
Jeroen van Gemert le 16 Avr 2013
Thanks a lot for the quick response and the helpful answer!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by