Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2007-08-02, 06:59   #1
pengyehui
初级会员
 
注册日期: 2007-08-02
帖子: 3
声望力: 0
pengyehui 正向着好的方向发展
问题 请各位高手指教如何矢量化如下循环语句?

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;


请各位高手看看
pengyehui 当前离线   回复时引用此帖
旧 2007-08-03, 17:30   #2
chianelxie
初级会员
 
注册日期: 2007-05-09
帖子: 29
声望力: 18
chianelxie 正向着好的方向发展
默认

不是每个循环都可以矩阵化的
chianelxie 当前离线   回复时引用此帖
旧 2007-08-04, 20:49   #3
pengyehui
初级会员
 
注册日期: 2007-08-02
帖子: 3
声望力: 0
pengyehui 正向着好的方向发展
默认

怎么就没更多人看呢
pengyehui 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 23:05


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