perceptron_or.m

来自「模式识别较全的讲解」· M 代码 · 共 55 行

M
55
字号
%%%%%%%%%%%%%%%%%%%感知器算法(逻辑或)%%%%%%%%%%%%%%%%%%%%%%%%%
% command window中输出:每步迭代之后更新得到的权向量,
%                       以及最终得到正确分类的权向量.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear;
theta = 0.05;
eita = 0.02;
w = rand(1,2)/10; %随机初始化权向量
x1 = [0;
      0];
x2 = [0 1 1;
      1 0 1];
N = size(x1,2)+size(x2,2);
num = 0;
count = 0;
while num<N
    for i=1:size(x1,2)
        count = count + 1;
        if w*x1(:,i)-theta < 0
            num = num+1;
        else
            num = 0;
            w = w - eita*x1(:,i)';
        end
        fprintf('The %d iteration:\n',count);
        w
        if num >= N
            break;
        end
    end
    
    if num >=N
        break;
    end
    
    for i=1:size(x2,2)
        count = count + 1;
        if w*x2(:,i)-theta > 0
            num = num+1;
        else
            num = 0;
            w = w + eita*x2(:,i)';
        end
        fprintf('The %d iteration:\n',count);
        w
        if num >= N
            break;
        end
    end
end
fprintf('Iteration is finished.\nThe result is:\n');
w

 

⌨️ 快捷键说明

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