Sieć Hopfielda w Ruby'm

Witam, czy implementował może ktoś z forumowiczów sieć Hopfielda w Ruby’m? Potrzebuję pomocy w implementacji tej sieci neuronowej.

http://ruby-fann.rubyforge.org/ i http://ai4r.rubyforge.org/ to jedyne co znalazlem do sieci neuronowych do Ruby, ale to bylo z rok temu. Wyglada ze AI4R ma Hopfield nets.

Witam, mam problem z klasą Matrix z którym napotkałem się w czasie tworzenia projektu

Przy tworzeniu klasy Hopfield:

tworzę macierz postaci

tablica = [[1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1]]

macierz_wag = Matrix

chcę wywołać metodę diagonal dla zmiennej macierz_wag tak aby na przekątnej tej macierzy 4x4 pojawiły się zera: macierz_wag.diagonal

Niestety pojawia mi się błąd że nie można wywołać tej metody.

Gdy na przykład stworzę macierz poleceniem Matrix[ [1,2], [1,3]].diagonal to ta funkcja zadziała i robi co trzeba

piszesz o Matrix z stdlib ?

bo tam metoda diagonal jest klasowa, więc ten ostatni kod nie może działać

dodatkowo pewnie to typo, ale Matrix też nie będzie działać

Ma na przykła coś takiego:

[code]@macierz_wzorca_2 = Matrix[ *[].fill([].fill(0, 0, @tablica_2.numRows), 0, @tablica_2.numColumns) ]
tablica_2 = [[0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]
for i in (0…6) do
for j in (0…4) do
tablica_2[i][j] = Integer(@tablica_2.getItemText(i,j))
end
end
@macierz_wzorca_2 = Matrix.rows(tablica_2)

  @macierz_wzorca_2.diagonal(0,0,0,0,0,0,0)[/code]

i zwraca mi błąd

undefined method `diagonal’ for #Matrix:0xbaf3d44 (NoMethodError)

a może inaczej jak napisać metodę która nie wykorzystywała by metod z klasy Matrix aby ustawić przekątną diagonalną na same zera w takiej macierzy ?

undefined method `diagonal' for #<Matrix:0xbaf3d44> (NoMethodError)

bo jak pisałem, takiej metody instancyjnej nie ma

ciekawa nazwa

class Matrix
  def zero_diagonal
    row_size.times {|i| @rows[i][i] = 0}
  end
end

nie najładniej bo polegam na wewnętrznej implementacji, no ale Matrix nie ma settera dla elementów

Oczywiście chodziło mi o macierz diagonalną. Metoda działa. Dziekuje Cube za pomoc.