数学建模社区-数学中国

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

作者: qiandongdong    时间: 2014-8-21 21:15
标题: 急啊!!!matlab程序一直死循环不知道什么原因。
如题。& o0 d$ c3 h0 \; S
主程序:. ?# G& y& o+ m8 D9 Q
global a! N: w0 U1 P3 m, r
jg=[];c=[];a=xlsread('dytjg.xls');r=a;
+ H, S9 f( ]* v- x6 S3 P' mfor i=1:807 H+ r8 `3 Q5 B4 v" L& ]/ B- c* P, f2 N
    [g,t]=fxjd(i);
  t1 m6 f, ?8 ]  w    lg=1;8 ]7 c7 _/ p# R% x  s# V
    [kl,k]=find(a==i);$ G+ j7 x8 j. H" g6 N
    a(:,k)=0;
3 D/ \) t% Q9 a) k: A    for q=1:t
3 N, m" K3 R: W: \+ X$ d: U* P0 g        gg=g(q);1 J0 h/ t0 n: n4 f
        b=[];j=1;
$ [' J. R0 X7 G% p; b; T        while j<=lg, ]; Z# f9 @6 y3 x+ s7 k$ h
            b=gg(j);ut=0;2 b2 p" o/ m, C, Z- A9 P/ f" \
            [p,ut]=fxjd(gg(j));
9 N* \: e) H- c/ d            l=1;' B% d9 v) b7 ]+ Y9 C' v# _
            while l<=ut
+ |0 W# Y% z4 K/ U                js=find(b==p(l));
1 n0 I0 e1 k# w( l! l7 C                if isempty(js)
# D5 E. u0 e: `0 ^                    b=[b,p(l)];/ I6 F1 z( w. W. H5 V6 I4 g
                    gg=[gg,p(l)];
* _8 K% \1 V3 o8 L4 N- e1 Y5 X6 l                    lg=lg+1;
) [. T9 @, b5 B% E3 Z6 e                end
1 ?  L# O# G; U2 g% e' d                l=l+1;
- N' W8 H$ L& Y: F. n# @! ^- w9 }5 m$ \+ T            end8 z5 O4 I; h) J* A" C* j
            j=j+1;* y5 G5 _  Y! C' g, J: P
        end# q& h! b) w& S& Y  ?' ?3 y7 y
        c=[c,length(b)];+ O2 [! z5 e( K- _. H
        lg=1;* ?: |; I. d6 ^4 F; c5 W: h
        t=t+1;) ]6 {2 u) A9 u
        gg=[];" V) |1 X+ s! S, u; @! M: u
    end
4 o, \. O! l  ^% d  _; I) w) L    uu=max(c);) U& J8 F2 C! j
    c=[];
+ v; U, w1 Y# x    if (uu/79.0)<0.9, G* }* o- D" n- `; R: `- p
        jg=[jg,i];2 M$ Y2 |5 L$ E" ~2 p
    end
6 F+ f0 N0 f* z$ ^    a=r;. l; f0 u' ~! |
end0 o$ r- @* S1 x% `
函数:
1 t, g& @* ?" Q7 U' ]$ ?function [y,x1]=fxjd(x);
9 S% X9 }% u% M0 U5 S  F2 ~global a
2 ]& d3 a$ r' i8 R0 D: i' f[p,l]=find(a==x);
" \) @' p/ }" c# L6 S* H& vx1=length(p);, |! P  A7 E0 g& G$ S* r
for o=1:x1
- f! @3 H0 m& J    if p(o)==17 J5 Q3 @0 g- C# o; n$ l4 }6 n4 ]
        y(o)=a(2,l(o));) c4 B; k7 {" h5 F6 O; G
    else/ v7 c- u  ^4 O, s9 U+ H9 V7 C. Z8 y
        y(o)=a(1,l(o));3 ^+ }* `& {2 ~2 `) F) V
    end6 i" o6 {; q2 D0 i. c* L
end
" a. h8 ]- D5 sif isempty(p)$ A: ?9 x7 j$ ?/ \0 _
    y=[];x1=[];! {- |+ ?& T+ Q9 x
end* s, G5 O' A5 g$ [
# p0 s% c- S. y: [& g4 ]0 P! ?9 G+ ^
matlab软件提示‘gg=[gg,p(l)];’这句有问题,但是不懂什么意思,求助前辈们,希望能帮帮忙。  g7 Q% T5 f$ U

" z& N5 {3 @+ }% J9 l
) F% g5 G4 g( {2 ^7 k
, N. @8 A+ l: U" z
作者: madio    时间: 2014-8-22 10:36
你把数据文件也传上来,要不没法实验,你这个是做什么的程序?出现死循环就一定是while循环出的问题,你可以把某句后面的分号去掉,这样就可以显示一些中间变量的值,你就可以知道哪里出了问题
作者: qiandongdong    时间: 2014-8-22 18:20
是做一个遍历树的程序,不过已经解决了,那个去分号的办法确实不错,谢谢哈~




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