数学建模社区-数学中国

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

作者: qiandongdong    时间: 2014-8-21 21:15
标题: 急啊!!!matlab程序一直死循环不知道什么原因。
如题。/ w6 ]4 }0 r, H7 q2 n  j& E
主程序:
8 w# e7 p0 c" m/ M2 Wglobal a& M4 }8 L+ U5 S( x& \
jg=[];c=[];a=xlsread('dytjg.xls');r=a;
% s$ w' C( p. A9 n( }for i=1:809 T* `6 s6 k: L. s0 d! {
    [g,t]=fxjd(i);9 A6 S6 J+ I# ^$ ~
    lg=1;* \' M" b8 S0 x% L* x
    [kl,k]=find(a==i);; W; _; P! }+ Z# l4 s) ]$ ~
    a(:,k)=0;
4 N9 d3 O4 i' L) W3 ~0 k7 i    for q=1:t/ J) t4 Q' W3 O/ S8 y  A
        gg=g(q);
9 o4 C( v6 U6 R        b=[];j=1;, R7 r' x) y8 ?& A
        while j<=lg
$ |7 L; a! k& J! J  z! J2 L4 E            b=gg(j);ut=0;
3 A0 V' w  N( C: t9 a/ t& [            [p,ut]=fxjd(gg(j));
9 ?3 o$ r% {$ j, g            l=1;
( L# F) ^+ N: H            while l<=ut8 [: I$ b* ^% Z% ]% S
                js=find(b==p(l));
0 a7 i6 {3 m4 P% [5 x/ {6 Y- v0 D                if isempty(js)
% Q- x. H$ V' @# J5 {* K                    b=[b,p(l)];3 F$ n" Z5 L# Q! k2 c: |
                    gg=[gg,p(l)];
. x% a1 @( s, c3 d8 ~$ t+ M                    lg=lg+1;
4 l6 r) s. `* V- @/ G" h                end2 w. f& w( z$ S3 Y7 U# Y' k# `
                l=l+1;9 m' [5 J) |  X
            end
  V# A7 B* ^3 D4 G            j=j+1;
) U. M' t" t* ~( m& c: L" _        end
) n3 v6 q. \/ K" q) l        c=[c,length(b)];
; k8 n( i* ]# N4 S# e+ B4 }        lg=1;
* X" L* ^, g# K' W  S. I3 a3 F        t=t+1;* Q7 B$ a( [% P7 A
        gg=[];
9 \" Z2 o1 ?! B5 `# l/ _    end
8 \" R) z5 p% {+ q* _9 N" {7 Z    uu=max(c);
5 V& t2 [3 o" `' ^8 B  f    c=[];4 R1 D( i1 f" |6 q
    if (uu/79.0)<0.9
7 A, f) E7 a/ v4 z2 G. C        jg=[jg,i];
6 Z2 a% q. a/ u. O) n* w4 z( _    end
2 q7 K+ P' f  y    a=r;7 l7 U6 |8 |( M# Z
end
- e: C8 g1 @, w* n9 a& `9 H. @函数:' d8 f! {1 ?' R: l0 @4 c
function [y,x1]=fxjd(x);
7 N/ C/ f) {! F' y2 xglobal a8 g9 K4 v! X4 @2 T, U
[p,l]=find(a==x);
" o: ]+ W6 c  X# F1 L8 Yx1=length(p);
' U* O2 `. s% c8 K; \- I9 _  Ufor o=1:x1% c$ Z4 A/ B* B8 N5 H+ y
    if p(o)==1' M  d' H8 W  O0 b: i; s
        y(o)=a(2,l(o));' Q& _/ ]' D& ?  |$ U: K( Q
    else. n, }7 H: P% [, p5 y" f
        y(o)=a(1,l(o));
7 m% T4 o) v$ S3 ]1 l" c2 x+ T    end
+ O" o8 f8 V" ~$ U# `* l- Iend
. P/ A6 D7 [9 S6 Dif isempty(p)+ x. ]% B3 U2 p) W# ?3 F( p  H
    y=[];x1=[];7 v) |( U3 Q( A1 c' u( {( W) {
end
. M1 N0 S$ Y0 U) e& I0 S& Y; E( K  A: r2 M
matlab软件提示‘gg=[gg,p(l)];’这句有问题,但是不懂什么意思,求助前辈们,希望能帮帮忙。
* Z6 Z" {% @0 U. F4 J
% M: ~  @2 C6 C# ]

; Y- K3 o/ \/ T* u
$ X0 J0 @8 W- k6 I: h* x; S% Q: d
作者: madio    时间: 2014-8-22 10:36
你把数据文件也传上来,要不没法实验,你这个是做什么的程序?出现死循环就一定是while循环出的问题,你可以把某句后面的分号去掉,这样就可以显示一些中间变量的值,你就可以知道哪里出了问题
作者: qiandongdong    时间: 2014-8-22 18:20
是做一个遍历树的程序,不过已经解决了,那个去分号的办法确实不错,谢谢哈~




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