麻烦:矩阵,向量和数组

时间:2009-09-26 09:17:50

标签: ruby arrays vector matrix

据我了解,矩阵的使用非常不灵活。因此,我试图让一系列向量处理。我的需求是:能够添加向量并对其组件进行算术运算。编写下面的代码,

require 'matrix'

x = Matrix.rows( IO.readlines("input.txt").each {|line| line.split} )

puts x.row_vectors

红宝石属于例外。为什么呢?

matrix.rb:1265:in `to_s': undefined method `join' for "1.2357 2.1742 -5.4834 -2.0735":String (NoMethodError)

好的,我已经平静下来并尝试了另一种方法。我写道:

a = Array.[]( IO.readlines("input.txt").each {|line| Vector.[](line.split) } )

但我能在数组中访问我的向量的唯一方法是使用第二个索引:

puts a[0][0]

这意味着,当我想在向量中访问所需的标量时,我将被迫使用第三个索引,如:

puts a[0][0][1]

所以,第二个问题是 - 第二个指数来自哪里?如何摆脱它?在将数据读入数组时我是否遗漏了什么?

1 个答案:

答案 0 :(得分:1)

我无法重现你的第一个问题。提取看起来像input.txt的东西,我可以执行第一个表达式而没有异常。

关于第二个问题,你的表达似乎有点复杂。怎么样:

b = IO.readlines("input.txt").map { |x| x.split(' ') }

这将为您提供一个“2D”数组数组,您只需要两个下标。 (至于你关于额外数组来自哪里的问题,你有一个来自Array构造函数,一个来自IO.readlines,一个来自Vector构造函数 ... 我认为。)

或者也许:

result = []
IO.foreach('input.txt') { |ln| result << ln.split(' ') }