Man Linux: Main Page and Category List


       im_matinv, im_matmul, im_mattrn - matrix operations on DOUBLEMASKs


       #include <vips/vips.h>

       DOUBLEMASK *im_matinv( const DOUBLEMASK *in, const char *name );

       int im_matinv_inplace( DOUBLEMASK *mat );

       DOUBLEMASK *im_matmul( in1, in2, name )
       DOUBLEMASK *in1, *in2;
       char *name;

       DOUBLEMASK *im_matcat( in1, in2, name )
       DOUBLEMASK *in1, *in2;
       char *name;

       DOUBLEMASK *im_mattrn( in, name )
       DOUBLEMASK *in;
       char *name;


       These  functions treat DOUBLEMASKs as matricies, performing some of the
       basics of matrix algebra on them.

       There should be more matrix  functions:  those  implemeneted  are  just
       sufficient   for   the   Gallery’s   calibration  routines.  im_matadd,
       im_matidentity should really be added.

       None   of   these   functions   damage    their    arguments,    except

       im_matinv(3)  inverts DOUBLEMASK in, returning a new DOUBLEMASK, called
       name, which contains the inverse of in. If no inverse exists,  NULL  is
       returned and im_error(3) is called with a diagnostic message.

       im_matinv_inplace(3)  is  as im_matinv(3) except that it overwrites its

       im_matmul() multiples the matrices held in in1 and in2, returning their
       product in a matrix called name.

       im_matcat()  returns a new matrix formed by appending matrix in2 to the
       end of matrix in1.  The two matricies must be the  same  width.  It  is
       useful for combining several im_measure()s into a single matrix.

       im_mattrn() transposes matrix in, returning the transpose in new matrix
       called name.


       DO NOT use matrix  inversion  to  solve  systems  of  linear  equations
       (SLEs).   The  routines  im_lu_decomp(3)  and  im_lu_solve(3)  are more
       efficient, even for a single SLE.


       The functions returns a new DOUBLEMASK on sucess, and NULL on  failure.

       im_matinv_inplace(3) returns zero on success, and -1 on failure.


       im_create_dmask(3),      im_measure(3),      etc.      im_lu_decomp(3),


       National Gallery, 1992.  Tom Vajzovic, 2006


       J. Cupitt
       Tom Vajzovic

                                  2 May 1991                      IM_MATINV(3)