im_matinv(3) im_matinv(3)
NAME
im_matinv, im_matmul, im_mattrn - matrix operations on DOUBLEMASKs
SYNOPSIS
#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;
DESCRIPTION
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 suf- ficient for the Gallery's calibration routines. im_matadd, im_matiden- tity should really be added. None of these functions damage their arguments, except im_mat- inv_inplace(3). 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 input. 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.
NOTES
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 effi- cient, even for a single SLE.
RETURN VALUE
The functions returns a new DOUBLEMASK on sucess, and NULL on failure. im_matinv_inplace(3) returns zero on success, and -1 on failure.
SEE ALSO
im_create_dmask(3), im_measure(3), etc. im_lu_decomp(3), im_lu_solve(3)
COPYRIGHT
National Gallery, 1992. Tom Vajzovic, 2006
AUTHORS
J. Cupitt Tom Vajzovic 2 May 1991 im_matinv(3)
im_matinv 7.14.5 - Generated Sun Sep 7 19:31:46 CDT 2008