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??

Antworten (1)

James Tursa
James Tursa am 23 Feb. 2018

1 Stimme

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):

Kategorien

Produkte

Gefragt:

am 23 Feb. 2018

Beantwortet:

am 23 Feb. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by