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!