5

Ruby 1.9.3 で基本的な機械学習アルゴリズムを実装しています。

算術演算にはクラス Matrix と Vector を使用しようとしています。しかし、ベクトルを別のベクトルで乗算しようとすると、「ExceptionForMatrix::ErrOperationNotDefined: Operation(*) can't be defined: Vector op Vector」と表示されます。

しかし、Ruby 1.9,3 のドキュメントには次のように書かれています。

*(x) ベクトルを x で乗算します。ここで、x は数値または別のベクトルです。

私のコードと出力は次のとおりです。

> a = Vector[1,2,3]
=> Vector[1, 2, 3]
> b = Vector[1,2,3]
=> Vector[1, 2, 3]
> a * b
ExceptionForMatrix::ErrOperationNotDefined: Operation(*) can't be defined: Vector op Vector
4

2 に答える 2

4

ドキュメントには、ベクトルを別のベクトルで乗算できると明確に記載されていますが、それは無意味であり、zisasign が指摘しているように、実装では許可されていません。

ただし、メソッドを使用していずれかのベクトルを 1 行の行列に変換し、covectorそれを乗算して意味のある計算を行うことができます。

a = Vector[1, 2, 3]
b = Vector[10, 100, 1000]

a.covector * b
# => Vector[3210]

a * b.covector
# => Matrix[[10, 100, 1000], [20, 200, 2000], [30, 300, 3000]]
于 2013-05-16T10:56:22.600 に答える