perceptron_2.m

来自「运用matlab实现感知器算法」· M 代码 · 共 74 行

M
74
字号
function Perceptron_2(Sample1,Sample2,sim)

sim0=[sim 1];
%
n1=size(Sample1);

for i=1:n1(1)

   ExtendSample1(i,:)=[Sample1(i,:) 1];  %样本1分量增广化,训练样本增加分量1

end;

%
n2=size(Sample2);

for i=1:n2(1)

   ExtendSample2(i,:)=[Sample2(i,:) 1];  %样本2分量增广化,训练样本增加分量1

end;
ExtendSample2=-1.*ExtendSample2;  %训练样本2乘以-1

%
Sample=[ExtendSample1;ExtendSample2];

n=size(Sample);

w=ones(1,n(2));    %增广权矩阵赋初值   %w=[1 1 1];

%
c=1;  %修正量p=1>0

d=zeros(1,n(1));
inter=0;

while (min(d)<=0&&inter<200)    %循环条件每一个样本分类正确
    
    inter=inter+1;

    for i=1:n(1)

        d(i)=w*Sample(i,:)';

        if d(i)>0

            w=w;  %%分类正确,权重不变

        end;

        if d(i)<=0

            w=w+c*Sample(i,:);  %%分类错误,调整权重

        end;

    end;

end;
if(inter>=200)
    txt=sprintf('线性不可分');
    disp(txt);
else
     txt=sprintf('线性可分');
     disp(txt);
     %test result;
     if w*sim0'>0
         classnum=0; %s belongs to s1;
     else
         classnum=1; %s belongs to s2;
     end
end

w
classnum

⌨️ 快捷键说明

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