数学建模社区-数学中国

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

作者: qiandongdong    时间: 2014-8-21 21:15
标题: 急啊!!!matlab程序一直死循环不知道什么原因。
如题。2 c: t  }' K* }8 K9 I, G- C
主程序:
7 p9 _3 T* G* w7 Xglobal a  k. h0 k/ ]7 O, D, A
jg=[];c=[];a=xlsread('dytjg.xls');r=a;
3 m$ f3 l4 G9 U  C9 @/ wfor i=1:808 R& e% [% M. k: t6 R9 v
    [g,t]=fxjd(i);8 F8 m0 c: o2 Z7 ?5 v, H2 u# @1 {. W9 n
    lg=1;
/ @9 e, C  [5 E& d) B+ [    [kl,k]=find(a==i);; n& @& F( ]) M! I
    a(:,k)=0;
1 N$ Q2 T% g1 {/ d. i0 o    for q=1:t
. _( p. Z5 w& j# t        gg=g(q);
- c- W1 Q' g3 p6 g        b=[];j=1;
& I  m5 e% U# }1 n% B- E) Z        while j<=lg
7 l" I* O5 b: I1 f) v; H+ g            b=gg(j);ut=0;
% w+ l# p; c5 y1 y5 S! M            [p,ut]=fxjd(gg(j));, u, l; H0 K" o* |) F! }* d
            l=1;
/ l8 u( l4 K, a2 \  A4 [0 ]            while l<=ut
) R9 _' l/ k2 g$ Y( ^                js=find(b==p(l));& y) c. }1 g" R& ?- X
                if isempty(js)' m  |7 r' M% R8 \# D: N8 h
                    b=[b,p(l)];+ e* s, s; R  B3 E7 a, u8 R
                    gg=[gg,p(l)];  K3 J4 r! Z9 L6 x
                    lg=lg+1;, D9 X7 a0 \" g$ {
                end
& w9 ~6 w: T# u( n8 L+ R                l=l+1;. l' R7 @  I& r5 k; d% Z0 |
            end9 c' i# ^  A3 A$ \+ E6 P1 `
            j=j+1;1 e8 n# h/ g2 L/ O; G3 @
        end! b$ b9 i, n: {& m& H  G
        c=[c,length(b)];
) F$ p2 o- h9 ~2 c# q        lg=1;
8 G0 u; D/ B' r4 f& j  g+ k7 F        t=t+1;; ?% C! X4 _# X
        gg=[];
" o* C" l/ _* D2 L) s' Q    end# v& j  K: D/ E( h2 j; W7 O  r
    uu=max(c);
  Q0 K6 S- @9 K5 m    c=[];
/ U1 p" h" b) F    if (uu/79.0)<0.96 D( u* k! O& i3 p$ t
        jg=[jg,i];+ }$ c" x- u& @
    end* b, ^, D" ]+ D# v2 ^
    a=r;5 V7 a8 K$ r6 [8 b: N0 @
end
* D* M' m3 J4 e8 [& u函数:
6 j* L' I2 d; P! b. ?* G: zfunction [y,x1]=fxjd(x);
2 \* K$ u; e8 R' B3 z. |3 [" d$ @global a
" C* p# D$ S! g8 p2 n# Z4 ]( M7 T9 T[p,l]=find(a==x);7 Z7 A, h- c6 |& r5 E2 [
x1=length(p);
6 c0 [1 Q" T0 B3 D" Afor o=1:x1+ Z+ R- u5 ^, _: Y% n  ?3 e
    if p(o)==12 H2 D1 a# ~: c; J# L
        y(o)=a(2,l(o));, j, s  @* i: W4 g% U% K" ~
    else3 k9 j% r' M: M8 r8 j# |
        y(o)=a(1,l(o));
% Y2 `- D7 K4 R    end8 P1 h; l& b0 h' C
end
! i: B, o, [7 ?. V3 ?if isempty(p)
: [0 J+ E5 W9 z* P/ M) D( B    y=[];x1=[];4 {+ H% G+ w9 ?+ ]( h. y' c7 k
end% E4 ?( n, f1 f7 |4 O+ m
( R5 ~( o( Y. e; L! w" U
matlab软件提示‘gg=[gg,p(l)];’这句有问题,但是不懂什么意思,求助前辈们,希望能帮帮忙。9 ^$ O0 V1 E4 {3 C

4 O7 g. j! q3 w# ?' I" M4 _' D
7 F  ~* H* W3 |
; a/ G4 b5 X2 I9 K
作者: madio    时间: 2014-8-22 10:36
你把数据文件也传上来,要不没法实验,你这个是做什么的程序?出现死循环就一定是while循环出的问题,你可以把某句后面的分号去掉,这样就可以显示一些中间变量的值,你就可以知道哪里出了问题
作者: qiandongdong    时间: 2014-8-22 18:20
是做一个遍历树的程序,不过已经解决了,那个去分号的办法确实不错,谢谢哈~




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