登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
求助各位高手MATLAB运行速度的问题
发帖
回复
2044
阅读
8
回复
[
求助
]
求助各位高手MATLAB运行速度的问题
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
0楼
发表于: 2010-05-15 09:12:29
求助各位高手MATLAB运行速度的问题
W"0 #
kP6r=HH@
我编写的一个程序运行的网格有80*180,运行的时间步数为1000,按道理我的程序运行完成应该不用多久的,可是却用了270秒钟!
l&yR-FJ7KY
H9nq.<;p
同样的都是fdtd的程序我运行别人的一个程序网格500*200,时间步数也有4000。可是这个程序仅仅用了360秒!为什么差距会那么大?我的 ..
$ OR>JnV
}1>a 71
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
1
条评分
gwzhao
技术分
+1
积极参与论坛交流,加分!
2010-05-17
离线
cem-uestc
UID :9061
注册:
2008-03-07
登录:
2019-01-05
发帖:
2575
等级:
荣誉管理员
1楼
发表于: 2010-05-15 10:02:22
Matlab循环的效率很低
共
条评分
欢迎光临
http://www.mwtee.com/home.php?mod=space&uid=13535
离线
seuwangyx
UID :39807
注册:
2009-08-20
登录:
2014-08-27
发帖:
66
等级:
仿真一级
2楼
发表于: 2010-05-15 10:11:52
对,尽量不要用循环,能用数组的用数组。
共
条评分
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
3楼
发表于: 2010-05-15 14:30:28
for p=Imin:Imax %hx hy 的fdtd迭代
2M;{|U
for j=Jmin:Jmax-1
bH=5[
T1=ez(p,j+1)-ez(p,j);
c)lK{DC
hx(p,j)=cay(ob(p,j),ob(p,j+1))*hx(p,j)-cby(ob(p,j),ob(p,j+1))/377*T1;
tVe*J@i\$
end
*R&g'y^d
end
['c:n?
sz)3 z
T1=ez(Imin:Imax,Jmin+1:Jmax)-ez(Imin:Imax,Jmin:Jmax-1);
L*5&hPU
8IX6MfR}C
hx(Imin:Imax,Jmin:Jmax-1)=cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)).*hx(Imin:Imax,Jmin:Jmax-1)-...
rdC(+2+Ay
-cby(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax))/377.*T1;
KctD=6
{ ~Cqb7
像这种就是矩阵运算吗?可是这样改的时候size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))就会超过10000*10000
~MXPiZG?
MATLAB就会提示out of memory了,这该怎么办呢?
共
条评分
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
4楼
发表于: 2010-05-15 14:30:51
回 2楼(seuwangyx) 的帖子
for p=Imin:Imax %hx hy 的fdtd迭代
>g F
for j=Jmin:Jmax-1
9]S}m[8k
T1=ez(p,j+1)-ez(p,j);
ZSbD4 |_
hx(p,j)=cay(ob(p,j),ob(p,j+1))*hx(p,j)-cby(ob(p,j),ob(p,j+1))/377*T1;
:n>h[{o%
end
eAl&[_o|S
end
PGybX:L
iWvgCm4
T1=ez(Imin:Imax,Jmin+1:Jmax)-ez(Imin:Imax,Jmin:Jmax-1);
+/Z:L$C6
7?A}qmv
hx(Imin:Imax,Jmin:Jmax-1)=cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)).*hx(Imin:Imax,Jmin:Jmax-1)-...
#v`G4d
-cby(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax))/377.*T1;
sQ`8L+oY
aMHIOA%Kh
像这种就是矩阵运算吗?可是这样改的时候size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))就会超过10000*10000
[pOU!9v4
MATLAB就会提示out of memory了,这该怎么办呢?
Ohjqdv@
共
条评分
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
5楼
发表于: 2010-05-15 14:31:03
回 1楼(cem-uestc) 的帖子
for p=Imin:Imax %hx hy 的fdtd迭代
Fc nR}TE
for j=Jmin:Jmax-1
Ck[Z(=b$$:
T1=ez(p,j+1)-ez(p,j);
U%KoG-#
hx(p,j)=cay(ob(p,j),ob(p,j+1))*hx(p,j)-cby(ob(p,j),ob(p,j+1))/377*T1;
8RocObY_W
end
hTy#Q.=
end
7?kvrIuY&
L$jRg
T1=ez(Imin:Imax,Jmin+1:Jmax)-ez(Imin:Imax,Jmin:Jmax-1);
c\R!z&y~
e0hT
hx(Imin:Imax,Jmin:Jmax-1)=cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)).*hx(Imin:Imax,Jmin:Jmax-1)-...
,{.&xJ$
-cby(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax))/377.*T1;
x &\~4,TN
mp5]=6~:m
像这种就是矩阵运算吗?可是这样改的时候size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))就会超过10000*10000
3w0m:~KS6V
MATLAB就会提示out of memory了,这该怎么办呢?
共
条评分
离线
seuwangyx
UID :39807
注册:
2009-08-20
登录:
2014-08-27
发帖:
66
等级:
仿真一级
6楼
发表于: 2010-05-16 07:29:30
回 4楼(求学者是也) 的帖子
这个,我还没遇到这种情况。是不是你的计算机的配置不够好啊,内存多大?matlab应该不会限制数组的大小把
共
条评分
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
7楼
发表于: 2010-05-16 10:33:25
回 6楼(seuwangyx) 的帖子
不会啊我查看的memory命令明明还有内存可用的,我的内存是2G的足够了才是!
H!xBFiOH$n
共
条评分
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
8楼
发表于: 2010-05-16 10:41:20
回 6楼(seuwangyx) 的帖子
而且很奇怪的是我定义的cay数组才是2*2的可是size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))却是变得那么大了呢?
共
条评分
发帖
回复