How to perform vector Matrix Multiplication

I need to multiply a time series of 4x4 matrices by a corresponding Time series of 4x4 transformation matrices. I am looking for the most efficient method without a for loop.
P_new = T * P
where: P is a nx4x4 matrix, where n is the number of time epochs.
T is a nx4x4 transformation matrix, where n is the number of time steps.
P_new is a nx4x4 version of P that is transformed.
In a loop I would do for i=1:n; P_new(i,1:4,1:4) = T(i,1:4,1:4) * P(i,1:4,1:4); end
How could I do this outside a loop??

回答 (1 件)

James Tursa
James Tursa 2018 年 2 月 23 日

1 投票

First I would suggest you reorder your dimensions to put the 4x4 matrices first, so that P is 4x4xn and T is 4x4xn. That way all of your 4x4 matrices are contiguous in memory. Then you have some options from the FEX (some of which are mex functions that require a C compiler):

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

製品

質問済み:

2018 年 2 月 23 日

回答済み:

2018 年 2 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by