数学建模社区-数学中国

标题: 急啊!!!matlab程序一直死循环不知道什么原因。 [打印本页]

作者: qiandongdong    时间: 2014-8-21 21:15
标题: 急啊!!!matlab程序一直死循环不知道什么原因。
如题。( p; V) a* |/ }: g$ N) K
主程序:0 P$ b9 ]) Q/ ?0 y, E" A/ g" _; r
global a
* Z. K6 X3 h& |) @( ~, O* }5 hjg=[];c=[];a=xlsread('dytjg.xls');r=a;
; p1 @/ w, F% F1 I5 G. mfor i=1:80+ G; _2 w# R% [  l5 F
    [g,t]=fxjd(i);
2 T$ i0 W- B; z4 W/ B* G4 Z    lg=1;
! e2 v+ ?3 X  O5 J( N    [kl,k]=find(a==i);) V) r- e% n3 D' X) t$ |/ o' W
    a(:,k)=0;
2 J" b) Y0 J1 |$ D! J; t2 z( C7 i  c    for q=1:t' E/ a2 f& P( D4 e) p1 C4 x' q
        gg=g(q);  F( z1 C3 R/ d" \. i" d, c0 R" S
        b=[];j=1;7 e. }2 Q# ^  j: O
        while j<=lg
! `7 G1 Q+ e2 h  ]            b=gg(j);ut=0;, P7 Y; b. O/ V
            [p,ut]=fxjd(gg(j));7 q3 W& _3 Z1 s& S0 c- W8 `
            l=1;
6 i) H( r2 W* }+ `/ ?- A2 }6 Y" r, i            while l<=ut
. x: k5 X$ l& y1 P                js=find(b==p(l));
9 P* [6 Z9 y) c/ e6 L7 }                if isempty(js)/ O+ [* ]; L: I1 s+ b
                    b=[b,p(l)];  Q9 B3 G' D, p+ T
                    gg=[gg,p(l)];
* u6 R( g0 \+ G  Y' g. N5 D8 K' t                    lg=lg+1;0 U' _0 X0 S# q1 T
                end8 p  {- k& n& }' K
                l=l+1;) V1 u2 _+ S& ]4 a/ B
            end% _6 Y) U& u( x/ i
            j=j+1;) v. I/ l" h8 }/ X
        end" Y. F7 U/ S& A/ Y& _: D
        c=[c,length(b)];
% H3 P; O$ G; p' b2 O* h+ G9 V        lg=1;1 V  J6 e) v+ M4 m0 [  a& f
        t=t+1;
. S8 p+ R, F" |' G: K8 b        gg=[];2 {1 x1 F( e3 E
    end
. i* J; H" |! X) c6 E  T    uu=max(c);
3 W* W3 S; c; V    c=[];
) c( G4 `* o- X    if (uu/79.0)<0.98 ]3 `8 ?3 y; G0 g7 n0 a5 Y
        jg=[jg,i];( b( V8 B; ]7 |# m4 ^
    end- G4 i' ^" ]2 F4 v
    a=r;
4 t( f5 q; ?& s  k/ O% R4 C; _4 Oend
0 e  R$ A& A, a8 j6 B6 o函数:
; g* L  C  m9 ffunction [y,x1]=fxjd(x);
% Q$ D- ]; s9 r5 U! qglobal a+ |4 q- N1 C. p
[p,l]=find(a==x);" ]2 d& N" M; B! Q" q4 a1 ?7 L1 f
x1=length(p);
% Y5 N. M$ g8 afor o=1:x1& ]* Z) X& P, l0 ^5 ~4 H. @; ]
    if p(o)==1
6 _$ @( g8 \% O        y(o)=a(2,l(o));$ Y! t7 ^! y$ r, K0 V. ~' U6 ?3 ]
    else( d" e6 a2 i$ z0 J6 ^: h/ b
        y(o)=a(1,l(o));
9 g! D" Q* G+ D; I    end8 C9 z$ w; f1 g
end
2 b: l! _" M4 `3 d) N( Iif isempty(p); c, `. u; D; D" D: O4 L' S3 m
    y=[];x1=[];) D6 j& H. ^% e3 x: A1 U: b
end
! a5 ]& r4 C! C1 d' ?& p" n" K9 A) e+ z* h( d% v
matlab软件提示‘gg=[gg,p(l)];’这句有问题,但是不懂什么意思,求助前辈们,希望能帮帮忙。8 E  A) s+ a) _( O+ C5 Z5 t- h* a
, \2 J% P  N; l5 O
" N; V' B& ?  m# R" B2 N+ _! |

3 U) L, h( I, H  u# c
作者: madio    时间: 2014-8-22 10:36
你把数据文件也传上来,要不没法实验,你这个是做什么的程序?出现死循环就一定是while循环出的问题,你可以把某句后面的分号去掉,这样就可以显示一些中间变量的值,你就可以知道哪里出了问题
作者: qiandongdong    时间: 2014-8-22 18:20
是做一个遍历树的程序,不过已经解决了,那个去分号的办法确实不错,谢谢哈~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5