您的位置:首页 > 编程语言 > MATLAB

MATLAB 感知机简单实现

2011-11-29 12:08 267 查看
%   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 function