ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
matrix.h
Go to the documentation of this file.
1/*
2 * HISTORY:
3 * This is a matrix header for the SVD library slightly modified by Kevin Schmidmayer.
4 * The original version was aquired from
5 * https://www.gb.nrao.edu/~rcreager/Zpectrometer/.
6*/
7
8typedef struct _axis {
9 double crpix;
10 double crval;
11 double cdelt;
12 char *ctype;
13 char *cunit;
15
16typedef struct _vector {
17 int n;
18 double *dat;
21
22typedef struct _matrix {
23 int nr;
24 int nc;
25 double *dat;
26 double **p;
29
30
31/* svd.c routines. */
32extern int
33svdcmp(double u[/*m x n*/], double w[/*n*/], double v[/*n x n*/],
34 const double a[/*m x n*/], int m, int n);
35extern int
36svbksb(double x[/*n x p*/], const double u[/*m x n*/],
37 const double w[/*n*/], const double v[/*n x n*/],
38 const double b[/*m x p*/], int m, int n, int p);
39extern int
40svsolve(double x[/*n x p*/], double wmin, double a[/*m x n*/],
41 const double b[/*m x p*/], int m, int n, int p, int preserve);
42extern int
43svinverse(double x[/*n x m*/], double wmin, const double a[/*m x n*/],
44 int m, int n);
45
46/* cproto -I../include -I$NEMOLIB -I$NEMOINC matrix.c */
47
48Matrix *allocate_matrix(int nr, int nc);
49void reallocate_matrix(Matrix *m, int nr, int nc);
50void free_matrix(Matrix *m);
51Axis2 *new_axis(double crpix, double crval, double cdelt, char *ct, char *cu);
53void check_matrix(const Matrix *m, int nr, int nc, const char *msg);
54void zero_matrix(Matrix *z);
55void random_matrix(Matrix *z);
56void unit_matrix(Matrix *u);
57Matrix *dup_matrix(const Matrix *a);
58Matrix *add_matrix(const Matrix *a, const Matrix *b, Matrix *c);
59void adds_matrix(Matrix *a, const double b);
60Matrix *mul_matrix(const Matrix *a, const Matrix *b, Matrix *c);
61Matrix *imul_matrix(const Matrix *a, const Matrix *b, Matrix *c);
62void vmul_matrix(const double *v, const Matrix *a, double *b);
63void muls_matrix(Matrix *a, const double b);
64void print_matrix(const Matrix *a, const char *msg);
67Matrix *bin_matrix(const Matrix *a, const int nbin, const int *bin0, const int *bin1);
68double invert_matrix(Matrix *a);
69void svd_matrix(const Matrix *a, Matrix *u, Matrix *v, Matrix *w);
70void svd_solve(const Matrix *a, const Matrix *u, const Matrix *v, const Matrix *w, Matrix *b, Matrix *x);
71
72Matrix *simple_image_read(const char *fname);
73void simple_image_write(const char *fname, Matrix *a);
@ p
Definition Tools.h:60
Axis2 * new_axis(double crpix, double crval, double cdelt, char *ct, char *cu)
Matrix * transpose_matrix(const Matrix *a)
Definition matrix.c:379
void zero_matrix(Matrix *z)
Definition matrix.c:130
void check_matrix(const Matrix *m, int nr, int nc, const char *msg)
Definition matrix.c:122
struct _vector Vector
void simple_image_write(const char *fname, Matrix *a)
void svd_matrix(const Matrix *a, Matrix *u, Matrix *v, Matrix *w)
Definition matrix.c:610
void print_matrix(const Matrix *a, const char *msg)
Definition matrix.c:355
int svdcmp(double u[], double w[], double v[], const double a[], int m, int n)
Definition svd.h:36
Matrix * imul_matrix(const Matrix *a, const Matrix *b, Matrix *c)
Definition matrix.c:298
void muls_matrix(Matrix *a, const double b)
Definition matrix.c:339
void reallocate_matrix(Matrix *m, int nr, int nc)
Definition matrix.c:47
int svsolve(double x[], double wmin, double a[], const double b[], int m, int n, int p, int preserve)
Definition svd.h:255
struct _matrix Matrix
void svd_solve(const Matrix *a, const Matrix *u, const Matrix *v, const Matrix *w, Matrix *b, Matrix *x)
Definition matrix.c:662
double invert_matrix(Matrix *a)
Definition matrix.c:481
Axis2 * new_axis1(Axis2 *a)
Definition matrix.c:98
Matrix * allocate_matrix(int nr, int nc)
Definition matrix.c:31
Matrix * mul_matrix(const Matrix *a, const Matrix *b, Matrix *c)
Definition matrix.c:235
Matrix * add_matrix(const Matrix *a, const Matrix *b, Matrix *c)
Definition matrix.c:188
void unit_matrix(Matrix *u)
Definition matrix.c:156
void free_matrix(Matrix *m)
Definition matrix.c:71
void vmul_matrix(const double *v, const Matrix *a, double *b)
Definition matrix.c:321
Matrix * laplace_matrix(const Matrix *a)
Definition matrix.c:404
void random_matrix(Matrix *z)
Definition matrix.c:141
Matrix * simple_image_read(const char *fname)
struct _axis Axis2
Matrix * bin_matrix(const Matrix *a, const int nbin, const int *bin0, const int *bin1)
Definition matrix.c:452
Matrix * dup_matrix(const Matrix *a)
Definition matrix.c:167
void adds_matrix(Matrix *a, const double b)
Definition matrix.c:213
int svbksb(double x[], const double u[], const double w[], const double v[], const double b[], int m, int n, int p)
Definition svd.h:217
int svinverse(double x[], double wmin, const double a[], int m, int n)
Definition svd.h:298
Definition matrix.h:8
char * ctype
Definition matrix.h:12
char * cunit
Definition matrix.h:13
double cdelt
Definition matrix.h:11
double crval
Definition matrix.h:10
double crpix
Definition matrix.h:9
Definition matrix.h:22
Axis2 * ar
Definition matrix.h:27
int nr
Definition matrix.h:23
double ** p
Definition matrix.h:26
double * dat
Definition matrix.h:25
int nc
Definition matrix.h:24
Axis2 * ac
Definition matrix.h:27
Definition matrix.h:16
double * dat
Definition matrix.h:18
int n
Definition matrix.h:17
Axis2 * a
Definition matrix.h:19