Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2010-03-23
帖子: 1
声望力: 0 ![]() |
![]()
时间走不动,貌似是死循环了,请大家帮忙看看我这个while循环出了什么问题。
谢谢大家! ----------------------------------------------------------------------- function v0best = fcn(vzmin,vzmax,va0,vb0,vc0,ia,ib,ic,f,C)%参数都是恒定值。 v0=vzmin; v0best=v0;%v0从vzmin开始取值 u0best=1000;%任意设定初始值 while v0<vzmax%判断v0值是否满足条件 va=va0+v0;%以下是计算取此v0时的u0 vb=vb0+v0; vc=vc0+v0; tla=(va-floor(va))/f; tlb=(vb-floor(vb))/f; tlc=(vc-floor(vc))/f; if va>0 ta=(1/f)-tla; else ta=tla; end if vb>0 tb=(1/f)-tlb; else tb=tlb; end if vc>0 tc=(1/f)-tlc; else tc=tlc; end i0=ia*ta+ib*tb+ic*tc; u0=abs(i0/(f*C));%得到此时的u0值 if u0<u0best%比较得出较小u0对应的V0 u0best=u0; v0best=v0; end deltavz=min(min(1-va+floor(va),1-vb+floor(vb)),min(1-vb+floor(vb),1-vc+floor(vc)));%计算v0下次的叠加量 v0=v0+deltavz; %v0增加 end end |
![]() |
![]() |