Multi Dimension Matrix Elements multiplication
1 次查看(过去 30 天)
显示 更早的评论
Hello,
I am strugling with some matrix multiplication...
I am having one M:
matrix and one N:
matrix with some given elements. Elements of M are given as
whereas elements of N are given as
. I wish to obtain maxtrix P:
whose elements
,
and
. Thus, matrix
would be
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!