数学建模社区-数学中国

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

作者: qiandongdong    时间: 2014-8-21 21:15
标题: 急啊!!!matlab程序一直死循环不知道什么原因。
如题。
% {5 ]0 i7 X+ v+ B主程序:9 V/ r; M/ v. C: L3 K
global a
# o3 A; H5 c7 Sjg=[];c=[];a=xlsread('dytjg.xls');r=a;2 E: _# r7 `2 ]0 ~
for i=1:80
9 j- V5 _. e& @    [g,t]=fxjd(i);' h3 S( o, V: ?- s4 x( v
    lg=1;  U% l8 F; ]6 A+ Y" J6 D
    [kl,k]=find(a==i);
# Y. ?$ M. T9 {/ A& \$ ?, r    a(:,k)=0;
% D6 K7 b+ `  u! H: b6 U+ P  b7 Y# p    for q=1:t' O; ~# |7 I2 H7 {6 v
        gg=g(q);
* h( c) i6 F) d        b=[];j=1;/ N6 I/ e9 r+ j2 y" R& p& }
        while j<=lg; j% Q) a+ S7 I  T1 B9 r
            b=gg(j);ut=0;
  \* k( H3 }- W2 L* w            [p,ut]=fxjd(gg(j));
6 u$ W5 f1 n; M2 C- v            l=1;
) k6 A1 b* `$ P            while l<=ut3 p$ b) ^5 I& Q  c! q2 r& _( f7 M1 I
                js=find(b==p(l));9 S; u4 P% k, {3 M+ d/ X% C
                if isempty(js)# Y. |9 v2 ]5 {2 D+ k
                    b=[b,p(l)];1 N8 n9 d: z" s" }
                    gg=[gg,p(l)];
9 \! S8 x8 L4 d" s                    lg=lg+1;- {# Z/ L: [  c* _, K) o5 u3 G
                end8 _, k2 z+ }0 y. d7 `- {1 @
                l=l+1;$ L. r: ^; T2 h' l: n* U. l) n. i
            end
2 o  _( I8 |! Z% w8 g' v& l            j=j+1;
" f7 Y0 q& P4 U9 t7 d        end
! F3 J5 F# N( e  B$ @        c=[c,length(b)];
% N5 l+ J, N" H9 i; O+ E        lg=1;+ z9 `( M# q1 ?2 n& i
        t=t+1;
* f' c4 a+ q( l4 \5 F4 o        gg=[];( a: j( [7 T& ^+ J
    end
& E* m5 i9 h$ I4 l# y    uu=max(c);
1 K& l, N( l" t- y- ^6 L3 p    c=[];
7 P3 b% W. D& c) z6 v5 X, ~2 U- J9 |    if (uu/79.0)<0.9' @1 }. N- S7 I0 w
        jg=[jg,i];
+ D  l2 W( t, G    end# o5 \2 I2 `9 o8 A% b' O- B2 C
    a=r;1 P, f4 A( F% I9 D6 d* M' N2 v
end
+ D3 O0 G. J) I函数:3 O' ]. @; K0 v$ ^: ], W: j) c$ }0 i
function [y,x1]=fxjd(x);
, K. j, x1 P; ]" Xglobal a4 o' R+ r+ Z" S  f9 c/ N9 @1 }" D% M
[p,l]=find(a==x);' M  l/ J$ p  t( }* A1 p1 ^
x1=length(p);: ]; s  Z1 G: {' ^  v
for o=1:x1
% p# v4 Q- ~; ~: ^: u; Y$ K    if p(o)==1
4 I6 [$ A& A  I* ]        y(o)=a(2,l(o));
6 n/ [) O. o8 m% f; _; e; S% {  E& G    else
1 ~3 o; S; r6 i3 D; s        y(o)=a(1,l(o));
) a( A# S2 K+ b1 ~    end
6 _; A  ^6 ^/ z; aend8 o& d7 X* t- j" K: s
if isempty(p)
. X2 C' ]; B/ w$ C: h6 b/ a8 g    y=[];x1=[];; r- D. r$ p" z9 N
end/ a1 k3 f, w& r/ a. K( ~* a
6 d6 ]+ y& P# f9 |
matlab软件提示‘gg=[gg,p(l)];’这句有问题,但是不懂什么意思,求助前辈们,希望能帮帮忙。
+ j' r5 ?+ z0 ]
' S. Q+ {% `8 `" M& o

, I4 A9 F6 u! ^8 v$ Q* F8 A, m5 _( Q' F' ]0 v7 K/ E0 C  {7 z

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




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