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

📄 lishuai.m

📁 该程序可以对二维三类样本进行分类
💻 M
字号:
x1=[1,30,50,40,60,540,40,60;10,23,60,30,20,4,10,23];
x2=-[130,150,140,110,150;10,30,60,30,20];
x3=[22,21,40,60,540,34,55,6,54;-12,-10,-23,-60,-23,-57,-76,-76,-22];

w1=ones(1,3);w2=ones(1,3);w3=ones(1,3);

[r1,q1]=size(x1);[r2,q2]=size(x2);[r3,q3]=size(x3);

x=[x1,x2,x3;ones(1,q1+q2+q3)];

i=1;n=0;num=0;k=.1;


 while i<q1+q2+q3+13,
 
        d1=w1*x(:,i);             
        d2=w2*x(:,i); 
        d3=w3*x(:,i);
       
     %switch i,   
     if (1<=i)&(i<=q1),           
            w=w1;
        if  d2>=d1,               
         w1=w+k*x(:,i)';
         w2=w2-k*x(:,i)';
         n=0;
        end
        if d3>=d1,            
            w1=w+k*x(:,i)';
            w3=w3-k*x(:,i)';
            n=0;
        end
        if (d2<d1)&(d3<d1)
            n=n+1;
        end
                if n>q1+q2+q3   
                break
                end
    
        
        
        
    elseif ((q1+1)<=i)&(i<=(q1+q2)),        
            w=w2;
          
        if  d1>=d2 
            w2=w+k*x(:,i)';
            w1=w1-k*x(:,i)';
            n=0;
        end
        if d3>=d2
            w2=w+k*x(:,i)';
            w3=w3-k*x(:,i)';
            n=0;
        end
         if (d2>d1)&(d3<d2)
                n=n+1;
         end
       
        
            if n>q1+q2+q3
            break;
            end
     
    elseif ((q1+q2+1)<=i)&(i<=(q1+q2+q3)),
            w=w3;
          
              if  d1>=d3
                w3=w+k*x(:,i)';
                w1=w1-k*x(:,i)';
                n=0;
            end
              if d2>=d3
                w3=w+k*x(:,i)';
                w2=w2-k*x(:,i)';
                n=0;
            end
            if (d2<d3)&(d3>d1) 
                n=n+1;
            end
                     if n>q1+q2+q3
                     break;
                     end
               
     end

                    if i>=q1+q2+q3
                    i=1;
                   else i=i+1;%i,n,num
                   end 
    
    num=num+1;
        
              if num>=9000
               break
               end
              
end
hold off,
plot(x(1,1:q1),x(2,1:q1),'o',x(1,q1+1:q1+q2),x(2,q1+1:q1+q2),...
'+',x(1,q1+q2+1:q1+q2+q3),x(2,q1+q2+1:q1+q2+q3),'*')  %









p=minmax(x(1,:));%
pm=-(-w1(3)*w3(2)-w2(3)*w1(2)+...
w2(3)*w3(2)+w1(3)*w2(2)+w3(3)*w1(2)-w3(3)*w2(2))/...
(-w1(1)*w3(2)-w2(1)*w1(2)+w2(1)*w3(2)+w1(1)*w2(2)...
+w3(1)*w1(2)-w3(1)*w2(2));
xmin=p(1);
xmax=p(2);
xx=[xmin,pm,xmax];
yy1=(-(w1(3)-w2(3))-(w1(1)-w2(1))*xx)/(w1(2)-w2(2));
yy2=(-(w1(3)-w3(3))-(w1(1)-w3(1))*xx)/(w1(2)-w3(2));
yy3=(-(w3(3)-w2(3))-(w3(1)-w2(1))*xx)/(w3(2)-w2(2));

xy1=[xmin;yy1(1);1];
xy2=[xmin;yy2(1);1];
xy3=[xmin;yy3(1);1];

d11=w1*xy1;
d12=w2*xy1;
d13=w3*xy1;

d21=w1*xy2;
d22=w2*xy2;
d23=w3*xy2;

d31=w1*xy3;
d32=w2*xy3;
d33=w3*xy3;
 if n>=q1+q2+q3 
     
     if(d13>d12)&(d13>d11)
         hold on,plot(xx(1,2:3),yy1(1,2:3),'r');
     else 
         hold on,plot(xx(1,1:2),yy1(1,1:2),'r');
     end
 
 
     
     if(d22>d21)&(d22>d23)
         hold on,plot(xx(1,2:3),yy2(1,2:3),'g');
     else 
         hold on,plot(xx(1,1:2),yy2(1,1:2),'g');
     end
     
     
   
     if(d31>d32)&(d31>d33)
         hold on,plot(xx(1,2:3),yy3(1,2:3),'b');
     else 
         hold on,plot(xx(1,1:2),yy3(1,1:2),'b');
     end
     
  title('判决面如下')
else %输出训练次数达到阈值
 hold on,title('训练次数达到阈值')
 
    
end

⌨️ 快捷键说明

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