我是靠谱客的博主 追寻豌豆,最近开发中收集的这篇文章主要介绍matlab 多重 for,如何用矩阵运算代替多重for循环,求助!!!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

function test

clear;clc;

N1=3;N2=4;N3=5; N4=2;

M1=6;M2=7;M3=9; M4=8;

Q_n1_n2_n3_n4_2=cat(5,randi(50,N1,N2,N3,N4),randi(50,N1,N2,N3,N4)); % 把Q1,Q3扩展到第5维

Q_m1_m2_m3_m4_2=cat(5,randi(50,M1,M2,M3,M4),randi(50,M1,M2,M3,M4)); % 把Q2,Q4扩展到第5维

n1_m1=randi(50,N1,M1);

n2_m2=randi(50,N2,M2);

n3_m3=randi(50,N3,M3);

% --------------------  使用"for循环"的方法(灵活,可读性好) -------------------------

tic

F_n4_m4=zeros(N4,M4);

for n1=1:N1 ,for m1=1:M1

for n2=1:N2, for m2=1:M2,

for n3=1:N3, for m3=1:M3

for n4=1:N4, for m4=1:M4

F_n4_m4(n4,m4)=F_n4_m4(n4,m4)+ ...

n1_m1(n1,m1)*n2_m2(n2,m2)*n3_m3(n3,m3)* ...

(Q_n1_n2_n3_n4_2(n1,n2,n3,n4,1)*Q_m1_m2_m3_m4_2(m1,m2,m3,m4,1)+ ...

Q_n1_n2_n3_n4_2(n1,n2,n3,n4,2)*Q_m1_m2_m3_m4_2(m1,m2,m3,m4,2));

end;end;end;end;end;end;end;end

toc

disp(F_n4_m4)

% --------------- 下面是不用"for循环"的高维矩阵运算(快速,可读性差) ------------------

tic

n1_l_l_m1=reshape(n1_m1,N1,1,1,M1); % N1*1*1*M1

n2_l_l_m2=reshape(n2_m2,N2,1,1,M2); % N2*1*1*M2

n3_l_l_m3=reshape(n3_m3,N3,1,1,M3); % N3*1*1*M3

Q_n1_n2_n3_1_1_1_n4_2=reshape(Q_n1_n2_n3_n4_2,N1,N2,N3,1,1,1,N4,2); % N1*N2*N3*1*1*1*N4*2

% 及时求和,减少内存消耗和计算量

n2_n3_m1_1_1_n4_2=shiftdim(sum(bsxfun(@times,n1_l_l_m1,Q_n1_n2_n3_1_1_1_n4_2)),1); % N2*N3*M1*1*1*N4*2

n3_m1_m2_1_n4_2=shiftdim(sum(bsxfun(@times,n2_l_l_m2,n2_n3_m1_1_1_n4_2)),1); % N3*M1*M2*1*N4*2

m1_m2_m3_n4_2=shiftdim(sum(bsxfun(@times,n3_l_l_m3,n3_m1_m2_1_n4_2)),1); % M1*M2*M3*N4*2

m1m2m3_n4_1_2=reshape(m1_m2_m3_n4_2,M1*M2*M3,N4,1,2); % (M1*M2*M3)*N4*2

Q_m1m2m3_1_m4_2=reshape(Q_m1_m2_m3_m4_2,M1*M2*M3,1,M4,2); % (M1*M2*M3)*1*M4*2

n4_m4=sum(shiftdim(sum(bsxfun(@times,m1m2m3_n4_1_2,Q_m1m2m3_1_m4_2)),1),3); % N4*M4

toc

disp(n4_m4)

% ---------------------------------- 结果比较 --------------------------------------

isequal(F_n4_m4,n4_m4)

end

最后

以上就是追寻豌豆为你收集整理的matlab 多重 for,如何用矩阵运算代替多重for循环,求助!!!的全部内容,希望文章能够帮你解决matlab 多重 for,如何用矩阵运算代替多重for循环,求助!!!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部