Multi Dimension Matrix Elements multiplication

1 回表示 (過去 30 日間)
sko
sko 2021 年 2 月 24 日
回答済み: Steven Lord 2021 年 2 月 24 日
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

回答 (2 件)

Rik
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))
ans = 1.5263e-05
timeit(@()option2(M,N))
ans = 5.3950e-06
isequal(option1(M,N),option2(M,N))
ans = logical
1
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

Steven Lord
Steven Lord 2021 年 2 月 24 日
If you're using release R2020b or later, see the pagemtimes function.

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by