我正在用 Ruby 1.9.3 实现基本的机器学习算法。
我尝试使用类 Matrix 和 Vector 进行算术运算。但是当我尝试将一个向量乘以另一个向量时,它说 “ExceptionForMatrix::ErrOperationNotDefined:无法定义操作 (*):Vector op Vector”。
但是 Ruby 的文档,1.9,3 says :
*(x) Multiplies the vector by x, where x is a number or another vector.
我的代码和输出在这里:
> 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
最佳答案
虽然文档明确指出您可以将一个向量乘以另一个向量,但这是荒谬的,而且正如 zisasign 指出的那样,实现不允许这样做。
但是,您可以使用 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]]
关于ruby - 在 Ruby 1.9.3 中,一个向量不能乘以另一个向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585195/