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

📄 distinguish1.m

📁 一个利用感知准则进行模式分类的程序,虽然很简单,但很实用
💻 M
字号:
function distinguish1()
w=[0 0 1
   0 1 1
  -1 0 -1 
  -1 -1 -1];
a(1,:)=[1 1 1];
a_result=modify(a(1,:),w)                            % 调用modify函数

switch a_result(2)                                   %判断分界线是否垂直于x1,并画图
    case 0
    x=(-1)/(a_result(1));
    y=-1:0.001:2;
    plot(0,0,'*',0,1,'*',1,0,'+',1,1,'+',x,y,'r-');
    xlabel('X1');
    ylabel('X2');
    axis([-1,2,-1,2]);
    otherwise
    x=-1:0.001:2;
    y=(-1)*(a_result(1)*x+a_result(3))/a_result(2);
    plot(0,0,'*',0,1,'*',1,0,'+',1,1,'+',x,y,'r-');
    xlabel('X1');  
    ylabel('X2');
    axis([-1,2,-1,2]);   
end
        


function m=modify(a_former,w_value)
u=1;                                                 %初始化u,nv,v值
nv=1;
v=[0 0 0 0];
while u|v(1)|v(2)|v(3)|v(4)                          %进入循环
    if u==1                                          %计算a(2)=a(1)+y1
        a((nv+1),:)=a_former+w_value(mod(nv,4),:);
        u=0;
    end
    if mod(nv,4)~=0                                 %判断a(nv)*yi的值(i=1,2,3)
       if a(nv,:)*w_value(mod(nv,4),:)'<=0
           a(nv+1,:)=a(nv,:)+w_value(mod(nv,4),:);    
       elseif a(nv,:)*w_value(mod(nv,4),:)'>0
            a(nv+1,:)=a(nv,:);    
       end
    end
    if mod(nv,4)==0                                %%判断a(nv)*y4的值
       if a(nv,:)*w_value(4,:)'<=0
           a(nv+1,:)=a(nv,:)+w_value(4,:);    
       elseif a(nv,:)*w_value(4,:)'>0
            a(nv+1,:)=a(nv,:);    
       end
    end
    nv=nv+1;                                      %nv自加1,准备进入下一循环
    for j=1:4
       if (a(nv,:)*w_value(j,:)')<=0              %循环条件判断修正
        v(j)=1;
       else
        v(j)=0;
       end
    end      
end
m=a(nv,:);                                        %返回最终a值

⌨️ 快捷键说明

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