我现在使用的是Ruby
,并且来自MATLAB
背景。我想要创建一个对象矩阵,以便能够执行矩阵/数学形式的索引元素,如MATLAB(mat(ii,jj)= 某些单元对象)。在Ruby中我没有看到类似的矩阵类型对象。如何在Ruby中创建诸如数组/列表等对象的“矩阵”?
- 我看到的是最好的选择是创建一个多维数组来给出矩阵的结构,这是正确的吗?
- 如何在Ruby中最好地创建矩阵状结构?
- 行和列的大小是否会从初始化点定义,并且可以在之后进行更改?
目前,我特别希望在该矩阵状结构的元件中插入其它阵列对象,并做到:(ar=Array.new(3){Array.new(3)}
)
irb(main):001:0> ar=Array.new(3){Array.new(3)}
=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
irb(main):002:0> ar.size
=> 3
irb(main):004:0> ar[0].size
=> 3
irb(main):005:0> ar[0][0].size
NoMethodError: undefined method `size' for nil:NilClass
from (irb):5
from :0
irb(main):006:0> ar[0][0]=[rand,rand,rand]
=> [0.327998120619301, 0.233951721107845, 0.0593579127810733]
irb(main):007:0> ar[1][0]=[rand,rand,rand]
=> [0.698779972364559, 0.290838119763321, 0.41685249594095]
irb(main):008:0> ar[2][0]=[rand,rand,rand]
和继续填充^矩阵^这种方式。有一个更好的方法吗?
但仍然有,我不能简单地进行操作,如问题:
irb(main):026:0> ar[0][0]
=> [0.327998120619301, 0.233951721107845, 0.0593579127810733]
irb(main):027:0> ar[0][1]
=> [0.360152144966612, 0.611276758393565, 0.0717397147786591]
irb(main):028:0> ar[0][0]-ar[0][1]
=> [0.327998120619301, 0.233951721107845, 0.0593579127810733]
所以我看到的唯一的办法就是从个人索引:
irb(main):032:0> ar[0][0][0]-ar[0][0][1]
=> 0.094046399511456
如果没有IRB提示,这样会更容易阅读。 – 2014-10-22 17:24:48