循环语句一直无限循环,没有停止,for,while,if三个套用

img


这是我要实现的流程图
以下是我的编程,但是我运行循环一直没有终止,无结果,请问是循环设置出现问题了吗?

clear
clc
datas = load('I:\.txt');%dsesr
s=load ('I:\txt');%sesr
percent=load('I:\percent.txt');%百分位数  
typed=1;
d1=1; %为时间 从1开始
ddd=d1;
FD=zeros(1843,1540);%计算天数的长度  
while(d<1843)  %d一直在推进,while1
    startd=d;
    dd=d1;
    typed=3;   
while(typed==1||typed==3) % 内循环,while2
    if(typed==1)
      dd=ddd;
    end  
    if(typed==3)
      dd=d1;    
end   
     while(datas(dd,1)<=percent(3,1))%while3
           dd=dd+1;   
    for ddd=dd:1843
        if (datas(ddd,1)>percent(3,1))  % 第一个条件
            if(datas(ddd+1,1)<=percent(3,1))%第二个条件
              if(s(ddd+2,1)<s(ddd,1))
                ddd=ddd+1;%更新天
                typed=1;% 内循环
                break;         
              else  
                if(s(ddd,1)<=percent(1,1)&&mean(datas(1:ddd,1))<=percent(2,1))
                    while(sddd+1,1)<=percent(2,1))
                        ddd=ddd+1;%寻找终止结点
                    end 
                    ddd=ddd+1;
                    duration=ddd-startd;                  
                    if(duration>3)
                       FD(startd:ddd,1)=1;
                    end      
                    d1=ddd+1;%更新时间从截止点的下一天开始
                end  %第一种情况结束  
                typed=2;% 外循环
                break;
              end 
            else
                if(s(ddd,1)<=percent(1,1)&&mean(datas(1:ddd,1))<=percent(2,1))
                    while(s(ddd+1,1)<=percent(1,1))
                        ddd=ddd+1;%寻找终止结点
                    end
                    ddd=ddd+1;
                   duration=ddd-startd;
                    if(duration>3)
                       FD(startd:ddd,1)=1;
                    end
                    d1=ddd+1;%更新时间
                end%第二种情况结束   
                typed=2;% 外循环
                   break;
            end 
        end
    end%for 循环结束
    end %while3结束 
end %while2 循环结束
end 

while(d<1843) %d一直在推进,while1
while循环前没有 d 这个变量

另外,代码的缩进很难阅读,参考下面:

clear
clc
datas = load('I:\.txt');%dsesr
s=load ('I:\txt');%sesr
percent=load('I:\percent.txt');%百分位数
typed=1;
d1=1; %为时间 从1开始
ddd=d1;
FD=zeros(1843,1540);%计算天数的长度
while(d<1843)  %d一直在推进,while1
    startd=d;
    dd=d1;
    typed=3;
    while(typed==1||typed==3) % 内循环,while2
        if(typed==1)
            dd=ddd;
        end
        if(typed==3)
            dd=d1;
        end
        while(datas(dd,1)<=percent(3,1))%while3
            dd=dd+1;
            for ddd=dd:1843
                if (datas(ddd,1)>percent(3,1))  % 第一个条件
                    if(datas(ddd+1,1)<=percent(3,1))%第二个条件
                        if(s(ddd+2,1)<s(ddd,1))
                            ddd=ddd+1;%更新天
                            typed=1;% 内循环
                            break;
                        else
                            if(s(ddd,1)<=percent(1,1)&&mean(datas(1:ddd,1))<=percent(2,1))
                                while(sddd+1,1)<=percent(2,1))
                                    ddd=ddd+1;%寻找终止结点
                                end
                                ddd=ddd+1;
                                duration=ddd-startd;
                                if(duration>3)
                                    FD(startd:ddd,1)=1;
                                end
                                d1=ddd+1;%更新时间从截止点的下一天开始
                            end  %第一种情况结束
                            typed=2;% 外循环
                            break;
                        end
                    else
                        if(s(ddd,1)<=percent(1,1)&&mean(datas(1:ddd,1))<=percent(2,1))
                            while(s(ddd+1,1)<=percent(1,1))
                                ddd=ddd+1;%寻找终止结点
                            end
                            ddd=ddd+1;
                            duration=ddd-startd;
                            if(duration>3)
                                FD(startd:ddd,1)=1;
                            end
                            d1=ddd+1;%更新时间
                        end%第二种情况结束
                        typed=2;% 外循环
                        break;
                    end
                end
            end%for 循环结束
        end %while3结束
    end %while2 循环结束
end