2010-11-13 56 views
0

我必須使用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

看看http://stackoverflow.com/questions/3455660/matlab-single-layer-neural-network – zellus 2010-11-13 09:30:10

回答

1

@Amro已經在實施與MATLAB的單層感知器發佈了一個精心設計的answer。他的文章不僅在'獲取代碼'方面很有價值,而且在於如何解決技術問題。它以感知器的圖形表示開始,顯示信號流,問題描述。作爲解決方案的一部分,代碼中還有優秀的評論。

只需在代碼中用有意義的名稱替換變量ab就可以產生很大的差異。