MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   请各位高手指教如何矢量化如下循环语句? (https://www.labfans.com/bbs/showthread.php?t=650)

pengyehui 2007-08-02 06:59

请各位高手指教如何矢量化如下循环语句?
 
1。
for i=1:length(y)
if(y(i)<-eps1)
y(i)=0;
elseif(y(i)>eps1)
y(i)=1;
else
y(i)=0.5+y(i)/(2.0*eps1)+1/(2*pi)*sin(pi*y(i)/eps1);
end
end

2。%求三重积分,积分区域是[0,1]*[0,1]*[0,1]
%每重采用Simpson公式,步长分别为dx,dy,dz
%函数在每个结点上的值已求出,放在N(1)*N(2)*N(3)的矩阵data中。
%我是这样求的,但速度很慢!!!!

Q2=zeros(N(1),N(2)); %先对z求
for i=1:N(1)
for j=1:N(2)
Q2(i,j)=data(i,j,1)+data(i,j,N(3));
Q2(i,j)=Q2(i,j)+4*sum(data(i,j,2:2:N(3)))+2*sum(data(i,j,3:2:N(3)-1));
Q2(i,j)=Q2(i,j)*dz/3;
end
end

Q1=zeros(g.N(1),1);%再对y求
for i=1:N(1)
Q1(i)=Q2(i,1)+Q2(i,g.N(2));
Q1(i)=Q1(i)+4*sum(Q2(i,2:2:N(2)))+2*sum(Q2(i,3:2:N(2)-1));
Q1(i)=Q1(i)*dy/3;
end

Q=0; %最后对x求
Q=Q1(1)+Q1(g.N(1));
Q=Q+4*sum(Q1(2:2:N(1)))+2*sum(Q1(3:2:N(1)-1));
Q=Qi*dx/3;


请各位高手看看

chianelxie 2007-08-03 17:30

不是每个循环都可以矩阵化的

pengyehui 2007-08-04 20:49

怎么就没更多人看呢


所有时间均为北京时间。现在的时间是 19:17

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.