지금은 을 사용 중이며 MATLAB
배경에서 왔습니다. matlab (mat (ii, jj) = 일부 셀 객체)와 같이 요소를 색인화하는 행렬/수학적 스타일을 수행 할 수 있도록 객체 행렬을 만들고 싶습니다. 비슷한 행렬 형식의 객체가 Ruby에 표시되지 않습니다.배열/목록과 같은 객체의 '행렬'을 만드는 방법은 무엇입니까?
- 내가 보는 것은 매트릭스의 구조를 제공하기 위해 다차원 배열을 만드는 것이 가장 좋습니다. 맞습니까?
- Ruby에서 구조와 같은 매트릭스를 가장 잘 만드는 방법은 무엇입니까?
- 행과 열 크기가 초기화 지점에서 정의되며 이후에 변경 될 수 있습니까?
현재 I 특별히이 매트릭스 형 구조의 소자에서 다른 어레이 객체를 삽입 할 수행 (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 프롬프트없이 쉽게 읽을 수 있습니다. –