MATLAB 感知机简单实现

%   Examples
%   --------
%   lhs = [-1;1;-1];
%   rhs = [1;1;-1];
%   [w,b] = perceptron(lhs,rhs)
function [w,b] = perceptron(lhs,rhs)
%   Author:Yao H. Wang

%   perceptron Summary of this function goes here
%   Detailed explanation goes here
%   w为要学习获得的权值。
%   b为偏移量。
%   flag用来判断两次学习之后权值是否改变,不改变则为0,默认为1。
%   flaglhs用来判断第一个(lhs)输出结果和预期相一致(即t=a,此处为tlhs=1=alhs)
%   当第二个(rhs)再次满足时,即将flag设为设置为0,退出循环,
%   否则将flaglhs重新设置为0,继续循环。
w = [0.5,-1,-0.5];
b = 0.5;
flag = 1;
flaglhs = 0;
%   循环学习获得w和b。
while flag
%   对第一个(lhs)进行学习。
    alhs = w * lhs + b;
    if(alhs < 0)
        alhs = 0;
    else
        alhs = 1;
    end
    if(1 == alhs)
        flaglhs = 1;
    else
        w = w + (1-alhs)*lhs';
        b = b + (1-alhs);
    end
%   对第二个(rhs)进行学习。
    arhs = w * rhs + b;
    if(arhs < 0)
        arhs = 0;
    else
        arhs = 1;
    end
    if(0 == arhs)
       if(flaglhs == 1)
           flag = 0;
       end
    else
        if(flaglhs == 1)
            flaglhs = 0;
        end
        w = w + (0-arhs)*rhs';
        b = b + (0-arhs);
    end
end

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值