Multi Dimension Matrix Elements multiplication
    4 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
回答(2 个)
  Rik
      
      
 2021-2-24
        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 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


