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

 採用された回答

Andrei Bobrov
Andrei Bobrov 2013 年 4 月 16 日
編集済み: Andrei Bobrov 2013 年 4 月 16 日

0 投票

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 件のコメント

Jeroen van Gemert
Jeroen van Gemert 2013 年 4 月 16 日
Thanks a lot for the quick response and the helpful answer!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeExecution Speed についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by