% 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
MATLAB 感知机简单实现
最新推荐文章于 2024-03-03 10:13:22 发布