Forum: Ruby 2dim array/matrix

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
B5ba8b404e8481b77d474e195ab50d87?d=identicon&s=25 wollez (Guest)
on 2005-11-28 13:23
(Received via mailing list)
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
5befe95e6648daec3dd5728cd36602d0?d=identicon&s=25 bob.news (Guest)
on 2005-11-28 13:56
(Received via mailing list)
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
37a3c73ffbf864e4b28f7f2384ee12ce?d=identicon&s=25 Timothy Hunter (tim-hunter)
on 2005-11-28 14:04
(Received via mailing list)
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/.
B5ba8b404e8481b77d474e195ab50d87?d=identicon&s=25 wollez (Guest)
on 2005-11-28 14:44
(Received via mailing list)
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
6b4566518f6675477dab9b8ba813cf3c?d=identicon&s=25 ruby.brian (Guest)
on 2005-11-28 14:52
(Received via mailing list)
On 28/11/05, Wolfgang <wollez@gmx.net> 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/
5befe95e6648daec3dd5728cd36602d0?d=identicon&s=25 bob.news (Guest)
on 2005-11-28 14:52
(Received via mailing list)
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
956f185be9eac1760a2a54e287c4c844?d=identicon&s=25 decoux (Guest)
on 2005-11-28 15:04
(Received via mailing list)
>>>>> "R" == Robert Klemme <bob.news@gmx.net> 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
5befe95e6648daec3dd5728cd36602d0?d=identicon&s=25 bob.news (Guest)
on 2005-11-28 16:05
(Received via mailing list)
ts wrote:
>>>>>> "R" == Robert Klemme <bob.news@gmx.net> 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
This topic is locked and can not be replied to.