On Thu, 21 Dec 2006 09:12:47 +0200, seepee wrote: > Does anyone know of a functional Matrix math class for ruby that could > multiply, add and substract 3x2 or larger matrices. > > The matrix.rb that is in Ruby API cannot multiply anything larger than 2x2 > matrices, which makes it useless for 2D or 3D graphics (for instance). > > SP Problem: go to terminal, and type "irb" or "irb1.8" >require 'matrix' #or require >rubylibrarypath/matrix.rb >p Matrix[ [25, 93, 33], [0, -1, 66] ] * Matrix[ [1, 53, 33], [1, -21, 77] ExceptionForMatrix::ErrDimensionMismatch: Matrix dimension mismatch from /usr/lib/ruby/1.8/matrix.rb:466:in `*' from (irb):4 ??

on 2006-12-21 13:40

on 2006-12-21 14:06

>> require 'matrix' #or require >rubylibrarypath/matrix.rb >> p Matrix[ [25, 93, 33], [0, -1, 66] ] * Matrix[ [1, 53, 33], [1, -21, 77] > > ExceptionForMatrix::ErrDimensionMismatch: Matrix dimension mismatch > from /usr/lib/ruby/1.8/matrix.rb:466:in `*' from (irb):4 > > ?? How exactly would you multiply such two matrices? Jakub

on 2006-12-21 14:22

seepee wrote: > Problem: > go to terminal, and type "irb" or "irb1.8" > >> require 'matrix' #or require >rubylibrarypath/matrix.rb >> p Matrix[ [25, 93, 33], [0, -1, 66] ] * Matrix[ [1, 53, 33], [1, -21, 77] Err... Have you done matrix computations for a long time ? You need that the number of *columns* from the left matrix matches the number of *lines* from the right matrix. If you try to multiply two 3x2 matrices, it is rather encouraging that Matrix refuses it... Try transposing your matrix first, if that is what you need. Are you dealing with transformation matrices (which are not real matrices) ? Vincent

on 2006-12-21 14:30

seepee wrote: >> > from /usr/lib/ruby/1.8/matrix.rb:466:in `*' from (irb):4 > > ?? > Yes, it's because you cannot multiply a 2x3 matrix with another 2x3 matrix.... try: Matrix[ [25, 93, 33], [0, -1, 66] ] * Matrix[ [1, 53, 33], [1, -21, 77]].transpose Julien

on 2006-12-22 15:39

Hi, Just a small correction... it is the number of *lines* from the left matrix that must match the number of *columns* from the right matrix. Kind Regards J. Augusto

on 2006-12-22 18:10

On 12/21/06, seepee <see@pee.org> wrote: > On Thu, 21 Dec 2006 09:12:47 +0200, seepee wrote: > > > Does anyone know of a functional Matrix math class for ruby that could > > multiply, add and substract 3x2 or larger matrices. > > > > The matrix.rb that is in Ruby API cannot multiply anything larger than 2x2 > > matrices, which makes it useless for 2D or 3D graphics (for instance). > > > > SP others in this thread have corrected the logical problem. but let me point out a typical additional response - the included Matrix library in ruby is NOT FAST. There are other libs that do this on the C level, such as NArray, that will allow much better performance for some graphical uses. Cameron