Multiplying all 2D square matricies in a 3D matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Connor LeClaire
el 21 de Oct. de 2021
Comentada: Paul
el 21 de Oct. de 2021
Consider a 3D matrix 'T' made from a concatenation of N square matrices of size m. Is there a easy way to multiply them all together (m1 x m2 x m3 x m4 ... x mN) into a single 2D matrix 'total' of size m? Similar to something like;
total = prod(T(:,:,:));
%This returns a 3D matrix of each 2D matrix of size (1,m)
In a for loop it may look like:
total = eye(m);
for i = 1;N
total = total*T(:,:,i);
end
Is it also possible to stop the multiplication at somepoint along the 3D matrix at point 1 < h < N;
total = prod(T(:,:,1:h))
I should also mention in my specific application the matrices are symbolic with both variables and numbers.
2 comentarios
James Tursa
el 21 de Oct. de 2021
Editada: James Tursa
el 21 de Oct. de 2021
Just use the for-loop. If for some reason you were really pressed for speed you could write a mex routine that could avoid all the intermediate data copies. But even this might only save you 10% - 20% execution time.
Respuesta aceptada
Paul
el 21 de Oct. de 2021
Editada: Paul
el 21 de Oct. de 2021
Easier than putting that loop in a function?
function mprod = matprod(T,h)
% should do some input checking to verify that 1 <= h <= size(T,3)
mprod = T(:,:,1);
for ii = 2:h
mprod = mprod*T(:,:,ii);
end
end
3 comentarios
Paul
el 21 de Oct. de 2021
I'm not aware of one, but maybe someone else has what you're loooking for. If they do, I really want to see it.
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!