Matrices, Gtk et al

R

Robert Love

I have something working but it sure seems clumsy and I'm hoping for
pointers to make it better. My app is a ruby & Gtk thing to do some
calculations. I want to have a standard 3x3 matrix of floating point
numbers as well some 3x1 vectors. I'm using a 9 element array today for
the 3x3. I also have a series of 9 Gtk.Entry fields that is even more
clumsy than the floating point numbers.

How do I build a function that, when called by the Calc button callback,
fetches the contents of the 9 numbers and returns it as a 3x3 matrix?
From what I've read, ruby doesn't have real two dimensional arrays. So
am I stuck doing everything in a manner that doesn't map well to my math
problem domain?

All advice appreciated.
 
J

Justin Collins

Robert said:
I have something working but it sure seems clumsy and I'm hoping for
pointers to make it better. My app is a ruby & Gtk thing to do some
calculations. I want to have a standard 3x3 matrix of floating point
numbers as well some 3x1 vectors. I'm using a 9 element array today for
the 3x3. I also have a series of 9 Gtk.Entry fields that is even more
clumsy than the floating point numbers.

How do I build a function that, when called by the Calc button callback,
fetches the contents of the 9 numbers and returns it as a 3x3 matrix?
From what I've read, ruby doesn't have real two dimensional arrays. So
am I stuck doing everything in a manner that doesn't map well to my math
problem domain?

All advice appreciated

Try checking out the Matrix standard library:

http://ruby-doc.org/stdlib/libdoc/matrix/rdoc/index.html

-Justin
 
M

Matthew Moss

How do I build a function that, when called by the Calc button callback,
fetches the contents of the 9 numbers and returns it as a 3x3 matrix?
From what I've read, ruby doesn't have real two dimensional arrays. So
am I stuck doing everything in a manner that doesn't map well to my math
problem domain?

You can do 2d arrays in Ruby as an array of arrays. (Very much like
many other languages.)

There's also the enumerator module that can help build a 3x3 array out
of a 9-element sequence. In irb:
require 'enumerator'
=3D> true
a =3D (1..9).to_a
=3D> [1, 2, 3, 4, 5, 6, 7, 8, 9]
=3D> []
a.each_slice(3) { |x| b << x }
=3D> nil
=3D> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
=3D> 6



You can use Matrix to store things other than Float, but most of the
methods on Matrix only work with and are intended for Float. So
putting things other than Float into Matrix turns it into an array of
arrays; might as well skip Matrix.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,202
Messages
2,571,057
Members
47,668
Latest member
SamiraShac

Latest Threads

Top