如何回到第一个矩阵索引

时间:2010-11-13 04:17:18

标签: matlab

我必须使用Matlab实现单层感知器。

我面临的问题是,当我运行程序时,它为每个输入提供输出(它显示结果4次),但我想回到矩阵的第一个索引,之后到达第四,我无法找到我如何回到矩阵的第一个索引。

我希望训练我的程序,以便通过在每个循环中迭代矩阵来产生与b中相同的结果。

这是我目前的代码:

a = [ 1  1
      1 -1
     -1  1
     -1 -1 ];
b = [1
    -1
    -1
    -1];
disp(a);
disp(b);
x = a(:,1);
disp(x);
y = a(:,2);
disp(y)
learningrate = 0.1;
maxiteration = 10;
weight(1)=0.1;
weight(2)=0.1;
weight(3)=0.1;
count = length(x);
for p = 1:count
    s = (x(p) * weight(1))+ (y(p) * weight(2))+ weight(3);
    if s >= 0
        result = 1;
        if result ~= b(p)
            weight(1) = weight(1)+learningrate*(b(p)-result)*x(p);
            weight(2) = weight(2)+learningrate*(b(p)-result)*y(p);
            weight(3) = weight(3)+learningrate*(b(p)-result);
            disp(result);
            disp(x(p));
            disp(y(p));
            disp(weight(1));
            disp(weight(2));
            disp(weight(3));
         end   
    else
        if s <= 0
            result = -1;
            disp(result);
            if result ~= b(p)
                weight(1)=weight(1)+learningrate*(b(p)-result)*x(p);
                weight(2)=weight(2)+learningrate*(b(p)-result)*y(p);
                weight(3)=weight(3)+learningrate*(b(p)-result);
                disp(x(p));
                disp(y(p));
                disp(weight(1));
                disp(weight(2));
                disp(weight(3));
             end          
         end
     end
 end

1 个答案:

答案 0 :(得分:1)

@Amro已经发布了一篇关于用MATLAB实现单层感知器的详细answer。他的帖子不仅在“获取一些代码”方面很有价值,而且在于如何解决技术问题。它首先显示感知器的图形表示,显示信号流,问题描述。并继续在代码中提出优秀的评论,作为解决方案的一部分。

使用有意义的名称替换代码中的变量ab可能会产生很大的不同。