matrix util <asakawa@twcu.ac.jp> 14 12 3 1 2 2 program 2 2.1 bstat............................... 3 2.2 gram schmidt........................... 3 2.3 matadd............................... 3 2.4 matarith............................. 4 2.5 matcat............................... 4 2.6 matconvol............................. 4 2.7 matcorr.............................. 4 2.8 matgen............................... 5 2.9 mati................................ 5 2.10 matinv............................... 5 2.11 matnormalize........................... 5 2.12 matprd............................... 5 2.13 matresize............................. 5 2.14 matsize.............................. 6 2.15 matsq............................... 6 2.16 matsub............................... 6 2.17 matt................................ 6 2.18 mattrim.............................. 6 2.19 metricmds............................. 7 2.20 pca................................. 7 2.21 plot2d............................... 7 2.22 reg................................. 8 1
3 8 3.1............................ 8 3.2......................... 8 3.3.......................... 9 3.4.......................... 9 4 10 4.1 matinit()............................. 10 4.2 intmatinit()........................... 10 4.3 vectinit()............................ 10 4.4 matfill()............................. 11 4.5 matfill()............................. 11 4.6 vectinnerprd()......................... 11 4.7 vectouterprd()......................... 11 4.8 vectouterprd()......................... 12 4.9 vectnormal()........................... 12 4.10 mati()............................... 12 4.11 matdiag()............................. 13 4.12 matdiag()............................. 13 4.13 mattrace()............................ 13 4.14 mattrace()............................ 13 4.15 matadd()............................. 14 4.16 matadd()............................. 14 4.17 matadd()............................. 15 4.18 matsub()............................. 15 4.19 matsub()............................. 15 4.20 matsub()............................. 16 4.21 matprd()............................. 16 4.22 matprd()............................. 17 4.23 matprd()............................. 17 4.24 matcpy()............................. 18 4.25 matcpy()............................. 18 4.26 matarith()............................ 18 4.27 matarith()............................ 19 4.28 matarith()............................ 19 4.29 matt()............................... 19 4.30 matt()............................... 20 4.31 matsq().............................. 20 4.32 matsq().............................. 20 4.33 matsq().............................. 21 2
4.34 matsqinv()............................ 21 4.35 matsqinv()............................ 21 4.36 matsqinv()............................ 22 4.37 matsqinvmatt()......................... 22 4.38 matsqinvmatt()......................... 22 4.39 matsqinvmatt()......................... 23 4.40 gram schmidt()......................... 23 4.41 Gram Schmidt()......................... 23 4.42 matnormalize()......................... 24 4.43 matnormalize()......................... 24 4.44 matnormalize()......................... 24 4.45 writemat()............................ 25 4.46 fwritemat()........................... 25 4.47 freadmat()............................ 25 4.48 matreadfile().......................... 26 4.49 matinfo read()......................... 26 4.50 mattrim()............................. 26 4.51 mattrim()............................. 27 4.52 plot2d()............................. 27 4.53 matinv()............................. 28 4.54 matinv()............................. 28 4.55 determinant().......................... 28 4.56 bstat min()........................... 29 4.57 bstat max()........................... 29 4.58 bstat range().......................... 29 4.59 bstat square()......................... 30 4.60 bstat sum()........................... 30 4.61 bstat mean()........................... 30 4.62 bstat variance()........................ 31 4.63 bstat sd()............................ 31 4.64 bstat skew()........................... 31 4.65 bstat kurtosis()........................ 32 4.66 matcorr()............................. 32 4.67 matcorr ()............................ 32 4.68 matcorrinv()........................... 33 4.69 matcorrinv()........................... 33 4.70 matubcov()............................ 33 4.71 matubcov()............................ 34 4.72 matcov()............................. 34 3
4.73 matcov()............................. 34 4.74 matubcovinv().......................... 35 4.75 matubcovinv().......................... 35 4.76 matcovinv()........................... 35 4.77 matcovinv()........................... 36 4.78 eigen pm()............................ 36 4
1 # space tab aplication program 3 4 0.051531 0.920450 0.082645 0.979234 0.517007 0.144957 0.131360 0.072932 0.078072 0.265250 0.235743 0.990869 double 32768 fileio util.h 2 program program -h help 2 % cat data matsq matinv % matsq data matinv []... [a b] a b 5
2.1 bstat bstat [options] [datafile] -mean: -sd: -max: -min: ( ) -range: -skew: -kurtosis: -corr: -invcorr: -cov: -invcov: -ubcov: -invubcov: -v : 2 -h : 2.2 gram schmidt gram schmidt [datafile] 2.3 matadd 2 matadd A [B] 6
2.4 matarith y = a {x} b b -plus -minus a -times -div value double matarith -plus -minus -times -div <value> [datafile] -plus value : value -minus : value -times : value -div : value 2.5 matcat matcat [-OFMT format] [datafile]... OFMT : printf "%8.5f " 2.6 matconvol f(x)g(x s)ds matconvol KERNEL [DATA] KERNEL : DATA : 2.7 matcorr matcorr [datafile] 7
2.8 matgen filler matgen N M filler N : (int) M : (int) filler : (double) 2.9 mati mati size 2.10 matinv matinv [datafile] 2.11 matnormalize 1 matnormalize [datafile] 2.12 matprd 2 matprd A [B] 2.13 matresize ( ) matresize N M [datafile] N : (int) M : (int) 8
2.14 matsize ( ) matsize [datafile]... 2.15 matsq 2 X X matsq [A] 2.16 matsub 2 matsub A [B] 2.17 matt matt [datafile] 2.18 mattrim (1,1)----------------------------(1,m) (top,left)--------+ +--------(bottom,right) (n,1)----------------------------(n,m) n m top left bottom righit mattrim sn sm en em [datafile] sn : (int) 9
sm : en : em : (int) (int) (int) 2.19 metricmds n m m m metric MDS -d option m m ( 0) metricmds metricmds [options] [datafile] -p [int]: ( 2) -g : -d : 2.20 pca pca [options] [datafile] -p [int] : ( ) -v : -gw : -gs : -notext : 2.21 plot2d plot2d [datafile] 10
2.22 reg Y = AX A Y X reg [options] -A datafile -y datafile -A datafile: -y datafile: -1 : Y = AX + c1 -v : -h : 3 C 3.1 #include "matrix_util.h" #include "fileio_util.h" include matrix A; matinit() matinit() 3.2 n m A i j *(A+offs(n,m,i,j)) offs(n,m,i,j) 11
#define offs(n,m,i,j) ((m)*((i)-1)+((j)-1)) 3.3 double 2 1 matrix util.h #ifndef scalar #define scalar double #endif typedef scalar *vector, *matrix; 3.4 matxxxx() matadd() matadd() matrix Ret, A, B; int an, am; /* A */ int bn, bm; /* B */ Ret = matadd(a,an,am, B,bn,bm); Ret matadd() A + B Ret Ret matrix Ret, A, B; int an, am; /* A */ int bn, bm; /* B */ Ret = matinit(an,am); matadd(a,an,am, B,bn,bm, Ret); 12
matadd() A+ = B A B A matsub(), matprd() 4 4.1 matinit() 2 \0 matrix matinit(int n, int m) n : m : 4.2 intmatinit() matinit() int intmatinit(int n, int m) n : m : 4.3 vectinit() matinit(n,1) vector vectinit(int n); n : 13
4.4 matfill() matrix filler int matfill(matrix A, int n, int m, double filler); A : n : m : filler : matrix 4.5 matfill() filler matrix matfill(int n, int m, double filler); n : m : filler : 4.6 vectinnerprd() 2 double vectinnerprd(vector a, vector b, int n); a : b : n : 4.7 vectouterprd() 2 int vectouterprd(vector a, vector b, int n, matrix Out); 14
a: b: out: 4.8 vectouterprd() 2 matrix vectouterprd(vector a, vector b, int n); a: b: 4.9 vectnormal() x = 1 vectnormal(vector x, int n); x: n: 4.10 mati() matrix mati(int n) ; n: 15
4.11 matdiag() ( ) int matdiag(matrix A, int n, matrix Ret); A: n: Ret: 4.12 matdiag() ( ) vector matdiag(matrix A, int n); A: n: 4.13 mattrace() ( ) int mattrace(matrix A, int n, double *trace); A: n: trace: 4.14 mattrace() 16
scalar mattrace(matrix A, int n); A: n: 4.15 matadd() Ret = A + B int matadd(matrix A, int an, int am, matrix B, int bn, int bm, matrix Ret) A: an: am: B: bn: bm: Ret: 4.16 matadd() A+ = B int matadd(matrix A, int an, int am, matrix B, int bn, int bm) A: an: am: B: bn: bm: 17
4.17 matadd() A + B matrix matadd(matrix A, int an, int am, matrix B, int bn, int bm) A: an: am: B: bn: bm: 4.18 matsub() Ret = A B int matsub(matrix A, int an, int am, matrix B, int bn, int bm, matrix Ret) A: an: am: B: bn: bm: Ret: 4.19 matsub() A = B 18
int matsub(matrix A, int an, int am, matrix B, int bn, int bm) A: an: am: B: bn: bm: 4.20 matsub() A B matrix matsub(matrix A, int an, int am, matrix B, int bn, int bm) A: an: am: B: bn: bm: 4.21 matprd() int matprd(matrix A, int an, int am, matrix B, int bn, int bm, matrix Ret) A: A 19
an: am: A A B: B bn: bm: Ret: B B 4.22 matprd() A = B int matprd(matrix A, int an, int am, matrix B, int bn, int bm) A: A an: am: A A B: B bn: bm: B B 4.23 matprd() matrix matprd(matrix A, int an, int am, matrix B, int bn, int bm) A: A an: am: A A B: B bn: bm: B B 20
4.24 matcpy() int matcpy(matrix From, int an, int am, matrix To); From: an: am: To: 4.25 matcpy() matrix matcpy(matrix A, int an, int am); From: an: am: 4.26 matarith() Ret = ax + b a b int matarith(matrix A, int n, int m, double a, double b, matrix Ret); A: an: am: a: a b: b Ret: 21
4.27 matarith() a b int matarith(matrix A, int n, int m, double a, double b); A: an: am: a: a b: b 4.28 matarith() a b matrix matmag(matrix A, int n, int m, double a, double b); A: an: am: a: a b: b 4.29 matt() int matt(matrix A, int an, int am, matrix Ret); A: an: am: Ret: 22
4.30 matt() matrix matt(matrix A, int an, int am); A: an: am: 4.31 matsq() A t A int matsq(matrix A, int n, int m, matrix Ret); A: n: m: Ret: 4.32 matsq() A t A A = A t A int matsq(matrix A, int n, int m); A: n: m: 23
4.33 matsq() A t A matrix matsq (matrix A, int n, int m); A: n: m: 4.34 matsqinv() int matsqinv(matrix A, int n, int m, matrix Ret); A: n: m: Ret: 4.35 matsqinv() int matsqinv(matrix A, int n, int m); A: n: m: 24
4.36 matsqinv() matrix matsqinv(matrix A, int n, int m); A: n: m: 4.37 matsqinvmatt() A A t A 1 A t int matsqinvmatt(matrix A, int n, int m, matrix Ret); A: n: m: Ret: A t A 1 A t 4.38 matsqinvmatt() A A t A 1 A t A = A t A 1 A t int matsqinvmatt(matrix A, int n, int m); A: n: m: 25
4.39 matsqinvmatt() A A t A 1 A t Ret = A t A 1 A t matrix matsqinvmatt(matrix A, int n, int m); A: n: m: 4.40 gram schmidt() Gram Schmidt int gram schmidt (matrix A, int n, int m, matrix Ret); A: n: m: Ret: 4.41 Gram Schmidt() Gram Schmidt matrix Gram Schmidt (matrix A, int n, int m); A: n: m: 26
4.42 matnormalize() 1 matrix matnormalize (matrix A, int n, int m); A: n: m: 4.43 matnormalize() 1 int matnormalize (matrix A, int n, int m); A: n: m: 4.44 matnormalize() 1 int matnormalize (matrix A, int n, int m, matrix Ret); A: n: m: Ret: 27
4.45 writemat() "8.3f" 8 3 writemat(file *fp, matrix w, int row, int col, unsigned char *mes, unsigned char *fmt) fp: w: row: col: mes: fmt: 4.46 fwritemat() fwritematf(file *fp, matrix w, int row, int col, unsigned char *mes, unsigned char *fmt) writmat 4.47 freadmat() int freadmat(file *fp, matrix A, int n, int m); fp: A: n: m: 28
4.48 matreadfile() matrix matreadfile(char *filename, int n, int m); filename: n: m: 4.49 matinfo read() matinfo typedef struct MAT_info { int n; int m; matrix mat; } *matinfo; matinfo matinfo matinfo read(char *filename); filename: 4.50 mattrim() (1,1)----------------------------(1,m) (top,left)--------+ +--------(bottom,right) (n,1)----------------------------(n,m) 29
n m top left bottom righit int mattrim(matrix O, int n, int m, int top, int left, int bottom, int rigtht, matrix Ret); O: n: m: top: left: bottom: right: Ret: 4.51 mattrim() matrix mattrim(matrix O, int n, int m, int top, int left, int bottom, int right); O: n: m: top: left: bottom: right: 4.52 plot2d() int plot2d(file *fp, matrix x, int n, int m, char *header); 30
fp: x: n: m: header: 4.53 matinv() int matinv(matrix A, int n, scalar *det, matrix ret); A: n: det: ret: 4.54 matinv() matrix matinv(matrix A, int n, scalar *det); A: n: det: 4.55 determinant() scalar determinant(matrix A, int m); A: n: 31
4.56 bstat min() (1 m ) matrix bstat min (matrix A, int n, int m); A: n: m: 4.57 bstat max() (1 m ) matrix bstat max (matrix A, int n, int m); A: n: m: 4.58 bstat range() ( - ) (1 m ) matrix bstat range (matrix A, int n, int m); A: n: m: 32
4.59 bstat square() (1 m ) matrix bstat square(matrix A, int n, int m); A: n: m: 4.60 bstat sum() (1 m ) matrix bstat sum (matrix A, int n, int m); A: n: m: 4.61 bstat mean() (1 m ) matrix bstat mean (matrix A, int n, int m); A: n: m: 33
4.62 bstat variance() (1 m ) matrix bstat variance (matrix A, int n, int m); A: n: m: 4.63 bstat sd() (1 m ) matrix bstat sd (matrix A, int n, int m); A: n: m: 4.64 bstat skew() (1 m ) matrix bstat skew (matrix A, int n, int m, vector mean, vector sd); A: n: m: 34
4.65 bstat kurtosis() (1 m ) matrix bstat kurtosis (matrix A, int n, int m, vector mean, vector sd); A: n: m: 4.66 matcorr() int matcorr (matrix A, int n, int m, matrix Corr); A: n: m: 4.67 matcorr () matrix matcorr (matrix A, int n, int m); A: n: m: 35
4.68 matcorrinv() int matcorrinv(matrix X, int n, int m, scalar *det, matrix corrinv); A: n: m: det: corrinv: 4.69 matcorrinv() matrix matcorrinv(matrix X, int n, int m, scalar *det); A: n: m: det: 4.70 matubcov() int matubcov(matrix X, int n, int m, matrix Ret); X: n: m: 36
4.71 matubcov() matrix matubcov(matrix X, int n, int m); X: n: m: 4.72 matcov() int matcov (matrix X, int n, int m, matrix Cov); X: n: m: Cov: 4.73 matcov() matrix matcov (matrix X, int n, int m); X: n: m: 37
4.74 matubcovinv() int matubcovinv (matrix X, int n, int m, scalar *det, matrix Covinv); X: n: m: det: Covinv: 4.75 matubcovinv() matrix matubcovinv (matrix X, int n, int m, scalar *det); X: n: m: det: 4.76 matcovinv() int matcovinv(matrix X, int n, int m, scalar *det, matrix Covinv); X: 38
n: m: det: Covinv: 4.77 matcovinv() matrix matcovinv(matrix X, int n, int m, scalar *det); X: n: m: det: 4.78 eigen pm() int eigen pm(matrix a0, vector evv, matrix vv, int n, int p); a0: evv: vv: n: p: 39