ruby - 在 Ruby 1.9.3 中,一个向量不能乘以另一个向量?

标签 ruby vector

我正在用 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/

相关文章:

c++ - 为什么 std::vector<>::const_reference 可以转换为非常量指针?

ruby-on-rails - 在 Rails 中深度模块化/命名空间是否正常?我公司的代码库深入 4 到 5 个命名空间,我想知道这是否正常

ruby - 如何确保一次只运行一个 Ruby 脚本实例?

c++ - 访问存储在 vector 中的对象:使用 std::vector::at 或 std::vector::operator[]?

c++ - 查找 vector 是否为子 vector C++

如果在类型 int vector 中找到重复项,C++ 返回 true

c++ - C++ 和 Ruby 之间的关系\依赖关系是什么?

ruby - rubygems 可以在 Ubuntu 上运行吗?

swift - 使用 Cocoapods 时 Generamba 设置失败

c++11 : Calling a variadic function with the elements of a vector, 并自动推断参数数量