登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
求助各位高手MATLAB运行速度的问题
发帖
回复
2046
阅读
8
回复
[
求助
]
求助各位高手MATLAB运行速度的问题
离线
求学者是也
UID :41338
注册:
2009-09-10
登录:
2010-11-04
发帖:
125
等级:
仿真二级
0楼
发表于: 2010-05-15 09:12:29
求助各位高手MATLAB运行速度的问题
-V_iv/fmM
~B2,edkM
我编写的一个程序运行的网格有80*180,运行的时间步数为1000,按道理我的程序运行完成应该不用多久的,可是却用了270秒钟!
~TvKMW6/#
1OOMqFn} L
同样的都是fdtd的程序我运行别人的一个程序网格500*200,时间步数也有4000。可是这个程序仅仅用了360秒!为什么差距会那么大?我的 ..
b rpsZU
Fs}vI~}
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
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迭代
HOSt0IHzty
for j=Jmin:Jmax-1
De^Uc
T1=ez(p,j+1)-ez(p,j);
< pWk
hx(p,j)=cay(ob(p,j),ob(p,j+1))*hx(p,j)-cby(ob(p,j),ob(p,j+1))/377*T1;
2AdO
end
+LhV4@zC
end
W20H4!G
(`)ZR%i
T1=ez(Imin:Imax,Jmin+1:Jmax)-ez(Imin:Imax,Jmin:Jmax-1);
kb~;s-$O`s
H-C$Jy)f"
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)-...
Yj{-|2YzL
-cby(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax))/377.*T1;
u5O`|I@R
)[np{eF.k
像这种就是矩阵运算吗?可是这样改的时候size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))就会超过10000*10000
CwdeW.A"j
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迭代
ANuO(^
for j=Jmin:Jmax-1
bB+ 4
T1=ez(p,j+1)-ez(p,j);
66C_XT
hx(p,j)=cay(ob(p,j),ob(p,j+1))*hx(p,j)-cby(ob(p,j),ob(p,j+1))/377*T1;
\u$[ $R5
end
ojG;[@V
end
`)TuZP_)
@aC9O9|~
T1=ez(Imin:Imax,Jmin+1:Jmax)-ez(Imin:Imax,Jmin:Jmax-1);
>`=9So_J
von<I
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)-...
T8W;Lb9hQ
-cby(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax))/377.*T1;
khQ@DwO*\=
KJYcP72P
像这种就是矩阵运算吗?可是这样改的时候size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))就会超过10000*10000
>)*0lfxTZ
MATLAB就会提示out of memory了,这该怎么办呢?
59#o+qo4
共
条评分
离线
求学者是也
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迭代
PdqyNn=
for j=Jmin:Jmax-1
t->I# t7
T1=ez(p,j+1)-ez(p,j);
5#U=x ,7e
hx(p,j)=cay(ob(p,j),ob(p,j+1))*hx(p,j)-cby(ob(p,j),ob(p,j+1))/377*T1;
q(\kCUy!
end
>!3r7LgK
end
:um]a70
*&doI%q
T1=ez(Imin:Imax,Jmin+1:Jmax)-ez(Imin:Imax,Jmin:Jmax-1);
1)t*l;.
^Rh`XE
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)-...
b<27XZ@
-cby(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax))/377.*T1;
bR'UhPs-8;
<^(>o
像这种就是矩阵运算吗?可是这样改的时候size(cay(ob(Imin:Imax,Jmin:Jmax-1),ob(Imin:Imax,Jmin+1:Jmax)))就会超过10000*10000
*n x$r[Mqj
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的足够了才是!
S1a6uE
共
条评分
离线
求学者是也
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)))却是变得那么大了呢?
共
条评分
发帖
回复