⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loop.asv

📁 用MATLAB编的配电网自动化的一些程序
💻 ASV
字号:
function lp=loop(d,m,b,o)
global bs qq ls
z=[22 4;4 5;5 12;12 13;13 16;16 15;15 2;16 17;17 18;18 19;19 20;
    20 21;21 3;19 14;14 9;9 10;10 11;11 1;9 8;8 7;7 6;6 5]
d=qiu_d(z)
m=[1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]
b=[0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0]
o=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[d1,d2]=size(d)
bs=[]
ls=[]
[m1,m2]=find(m==1)
bs=m2
mn=0
mm=0
z=1
 while (length(bs)~=0)
        qq=zeros(1,d2)
        a=bs(1)
        bs(1)=[]
        ls=[a ls]
        while (length(ls)~=0)   
        a=ls(1)
              for i=1:d2
                  if(d(a,i)==1&b(a)==0&o(i)==o&b(i)==0&m(i)==0)
                          [i1,i2]=find(ls==i)
                          if(length(i2)==0)
                          ls=[i ls]
                          elseif(length(2)~=0)
                          ls=ls
                          end
                  elseif(d(a,i)==1&b(a)==0&o(i)==o&b(i)==1&m(i)==0)
                          [i1,i2]=find(ls==i)
                          if(length(i2)==0)
                            ls=[i ls]
                            qq(i)=1
                          elseif length(i2)==1                        %防止T接点出发双马上找回T接点 
                                   if (i2>3)|(i2==3&d(ls(1),i)==1)
                                       lss=[]
                                       lss(1)=i
                                       for j=1:i2
                                       lss=[lss ls(j)]
                                       end
                                   ls=[i ls]  
                                    mm=mm+1
                                   ls2{mm}=lss                              %找到第二类环
                                   ls(1)=[]
                                   huitui(b,d)                   %找到第二类环后回退
                                   a=ls(1)
                                   elseif (i2<3)|(i2==3&d(ls(1),i)==0)
                                   continue
                                   end
                           end
                   elseif(d(a,i)==1&b(a)==1&o(i)==o&m(i)==0)
                           [i1,i2]=find(ls==i)
                          if(length(i2)~=0)
                              ls=ls
                          elseif(length(i2)==0)
                                 if(z==1)
                                    ls=[i ls]
                                    bs=bs
                                    z=z+1
                                elseif(z==2)
                                    ls=ls
                                    bs=[i bs]
                                    z=1
                                end
                          end
                  elseif(d(a,i)==1&m(i)==1)
                         l=length(ls)
                        if(ls(l)~=i)                                   %防止从源点出发又找回本源点
                            ls=[i ls]
                            mn=mn+1                
                            ls1{mn}=ls                                  %找到第一类环
                            ls(1)=[]

                            huitui(b,d)                       %找到第一类环后回退
                            [i3,j3]=size(ls)
                              if j3>0,
                              a=ls(1)
                              else,
                              break
                              end
                        elseif(ls(l)==i)
                            continue
                        end
                  end  
             end
        end               
     end
end
ls1
ls2
 g=0
for i=1:mn
    disp(ls1{i})
    l=length(ls1{i})
    if ls1{i}(1)>ls1{i}(l)
        ls1{i}=ls1{i}
        g=g+1
    else
        continue
    end
end
for i=1:g
    ll=length(ls1{i})
    for j=1:ll
        j
        if ls1{i}(j)==22
            ls1{i}(j)=0
        end
    end
end
fprintf('此配电网的第一类环为:\n')
for i=1:g
    fprintf('loop[%d]:',i )
    disp(ls1{i})
end
for i=1:mm
    ls2{i}(1)=[]
    ll=length(ls2{i})
    for j=1:ll-1
        for k=1:ll-j
            if(ls2{i}(k)>ls2{i}(k+1))
                t=ls2{i}(k)
                ls2{i}(k)=ls2{i}(k+1)
                ls2{i}(k+1)=t
            end
        end
    end
end
aa=1
ls22{aa}=ls2{1}
for i=1:mm
    for j=(i+1):mm
        if ls2{i}~=ls2{j}
            aa=aa+1
         ls22{aa}=ls2{j}
        else
            continue
        end
    end
end
fprintf('此配电网的第二类环为:\n')
for i=1:aa
    fprintf('loop[]')
    disp(ls22{aa})
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -