Man Linux: Main Page and Category List

im_matinv, im_matmul, im_mattrn - matrix operations on DOUBLEMASKs

#include<vips/vips.h>DOUBLEMASK*im_matinv(constDOUBLEMASK*in,constchar*name);intim_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, exceptim_matinv_inplace(3).im_matinv(3)inverts DOUBLEMASKin, returning a new DOUBLEMASK, calledname, which contains the inverse of in. If no inverse exists, NULL is returned andim_error(3)is called with a diagnostic message.im_matinv_inplace(3)is asim_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.

DONOTuse matrix inversion to solve systems of linear equations (SLEs). The routinesim_lu_decomp(3)andim_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), im_lu_solve(3)

National Gallery, 1992. Tom Vajzovic, 2006

J. Cupitt Tom Vajzovic 2 May 1991 IM_MATINV(3)