Multi Dimension Matrix Elements multiplication
    4 views (last 30 days)
  
       Show older comments
    
Hello,
I am strugling with some matrix multiplication... 
I am having one M:  matrix and one  N:
 matrix and one  N:  matrix with some given elements. Elements of M are given as
 matrix with some given elements. Elements of M are given as  whereas elements of N are given as
 whereas elements of N are given as  . I wish to obtain maxtrix P:
. I wish to obtain maxtrix P:  whose elements
  whose elements  ,
,   and
 and  . Thus, matrix
 . Thus, matrix  would be
 would be  in my case.
 in my case.
 matrix and one  N:
 matrix and one  N:  matrix with some given elements. Elements of M are given as
 matrix with some given elements. Elements of M are given as  whereas elements of N are given as
 whereas elements of N are given as  . I wish to obtain maxtrix P:
. I wish to obtain maxtrix P:  whose elements
  whose elements  ,
,   and
 and  . Thus, matrix
 . Thus, matrix  would be
 would be  in my case.
 in my case.Does anyone know how to perform this complex operation in the fastest way (without loops)?
Thanks in advance
0 Comments
Answers (2)
  Rik
      
      
 on 24 Feb 2021
        Not completely without loops, but this should be fast enough. You should also be aware that loops can sometimes be the fastest way.
M=rand(3,2);N=rand(2,3,4);
%prime the execution engine to produce a more reliable comparison
timeit(@()option1(M,N));
timeit(@()option1(M,N))
timeit(@()option2(M,N))
isequal(option1(M,N),option2(M,N))
function P=option1(M,N)
P=zeros(size(M,1),size(N,2),size(N,3));
for n=1:size(M,1)
    P(n,:,:)=M(n,1)*N(1,:,:)+M(n,2)*N(2,:,:);
end
end
function P=option2(M,N)
P=zeros(size(M,1),size(N,2),size(N,3));
for i=1:size(M,1)
    for j=1:size(N,2)
        for k=1:size(N,3)
            P(i,j,k)=M(i,1)*N(1,j,k)+M(i,2)*N(2,j,k);
        end
    end
end
end
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

