hello, I'm quite new to programming as well to ruby. I want to store data in a 2 dimensional array. How can I do this? A more detailed describtion of what I want to do: I have data from a digital elevation model. This is stored in a log txt file. I want to read it in and store it in an array or matrix. Because there are some error/gaps in the data I want to check for these values and calculate an average from the surrounding values. At the end all values should get written to an other txt file as x, y, z triples. The main problem for me to start is the 2dimensional storage. I know the needed size of the 2dim array/matrix (x-dim,y-dim). For getting the data in I was thinking of something like: dem[xi][yi]=value . Kind regards Wolfgang

on 2005-11-28 14:23

on 2005-11-28 14:56

Wolfgang wrote: > the end all values should get written to an other txt file as x, y, z > triples. The main problem for me to start is the 2dimensional > storage. I know the needed size of the 2dim array/matrix > (x-dim,y-dim). For getting the data in I was thinking of something > like: dem[xi][yi]=value . The easiest to achieve that is matrix = Array.new(dim_x) { Array.new(dim_y) } There are also some matrix classes on the RAA http://raa.ruby-lang.org/search.rhtml?search=matrix For storage you can use CSV implementations or cook your own: File.open("matrix.csv", "w") do |io| matrix.each_with_index do |yvalues, xidx| yvalues.each_with_index do |val, yidx| io.print xidx,yidx,val,"\n" end end end etc. HTH Kind regards robert

on 2005-11-28 15:04

Wolfgang wrote: > values should get written to an other txt file as x, y, z triples. The > main problem for me to start is the 2dimensional storage. I know the > needed size of the 2dim array/matrix (x-dim,y-dim). For getting the data > in I was thinking of something like: dem[xi][yi]=value . > > Kind regards > > Wolfgang Ruby has a Matrix class in the standard library. Check out "matrix" in the http://www.ruby-doc.org/stdlib/.

on 2005-11-28 15:44

Thanks for the answers, I think I will use for the beginning this solution: mx = Array.new(dim_x) { Array.new(dim_y) } for the matrix class: I don't understand how I can set in a matrix single values: require "matrix" m=Matrix[ [25, 93], [-1, 66] ] puts m.[](1,1) this works but when I try: m.[](1,1)=123 puts m I only get an error. Wolfgang

on 2005-11-28 15:52

On 28/11/05, Wolfgang <removed_email_address@domain.invalid> wrote: > this works but when I try: > m.[](1,1)=123 > puts m > I only get an error. > > Wolfgang > > Try these: puts m[1,1] m[1,1] = 123 pits m[1,1] brian -- http://ruby.brian-schroeder.de/ Stringed instrument chords: http://chordlist.brian-schroeder.de/

on 2005-11-28 15:52

Wolfgang wrote: > this works but when I try: > m.[](1,1)=123 > puts m > I only get an error. You probably misread the documentation. Did you try m[1,1] m[1,1] = 123 ? Kind regards robert

on 2005-11-28 16:04

```
>>>>> "R" == Robert K. <removed_email_address@domain.invalid> writes:
R> m[1,1] = 123
Try it :-)
moulon% ruby -rmatrix -e 'm = Matrix[[25, 93], [-1, 66]]; m[1, 1] = 123'
-e:1: undefined method `[]=' for Matrix[[25, 93], [-1, 66]]:Matrix
(NoMethodError)
moulon%
Guy Decoux
```

on 2005-11-28 17:05

ts wrote: >>>>>> "R" == Robert K. <removed_email_address@domain.invalid> writes: > >> m[1,1] = 123 > > Try it :-) > > > moulon% ruby -rmatrix -e 'm = Matrix[[25, 93], [-1, 66]]; m[1, 1] = > 123' -e:1: undefined method `[]=' for Matrix[[25, 93], [-1, > 66]]:Matrix (NoMethodError) moulon% "cool" :-) robert