Funciones que trabajan con matrices. Más...
Estructuras de datos | |
struct | PdsMatrix |
La estructura tipo PdsMatrix . Esta estructura genera una matriz de Nlin lineas y Ncol columnas. Para usar incluir pds/pdsmatrix.h. Más... | |
defines | |
#define | PDS_OK 1 |
#define | PDS_WRONG 0 |
pds_matrix_new | |
PdsMatrix * | pds_matrix_new (PdsRaNatural Nlin, PdsRaNatural Ncol) |
Crea una matriz de tipo PdsMatrix e inicia con cero todos los elementos. Más... | |
PdsMatrix * | pds_matrix_new_rand (PdsRaNatural Nlin, PdsRaNatural Ncol) |
Crea una matriz de tipo PdsMatrix e inicializa los elementos con números aleatorios uniformemente distribuidos entre [0.0,1.0>. Más... | |
PdsMatrix * | pds_matrix_new_matrix (const PdsMatrix *MatSrc) |
Crea una matriz de tipo PdsMatrix a partir de la matriz MatSrc. Más... | |
PdsMatrix * | pds_matrix_new_load_data (const char *datafile) |
Crea una nueva matriz e inicia los datos con los elementos de la linea line del archivo datafile. Usa TAB como delimitador de elemento y un salto de linea como delimitador de linea. Si se pide una linea inexistente la funcion retorna NULL. Más... | |
pds_matrix_copy | |
int | pds_matrix_copy_matrix (PdsMatrix *Matrix, PdsRaNatural X1, PdsRaNatural Y1, const PdsMatrix *MatSrc, PdsRaNatural X2, PdsRaNatural Y2) |
Copia en la matriz Matrix en la posicion (X1,Y1) la matriz MatSrc desde la posicion (X2,Y2). Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix(X1,Y1)=MatSrc(X2,Y2). Más... | |
int | pds_matrix_copy_vector_col (PdsMatrix *Matrix, const PdsVector *VecSrc, PdsRaNatural col) |
Copia vector VecSrc en la columna col de la matriz Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix(:,col)=VecSrc. Más... | |
int | pds_matrix_copy_vector_lin (PdsMatrix *Matrix, const PdsVector *VecSrc, PdsRaNatural lin) |
Copia vector VecSrc en la linea lin de la matriz Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix(:,col)=VecSrc. Más... | |
int | pds_matrix_copy_identity (PdsMatrix *Matrix, PdsRaNatural X, PdsRaNatural Y, PdsRaReal Val) |
Copia en la matriz Matrix una matriz identidad(Val) en la posicion (X,Y). Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix(NLin,NCol)=MatSrc. Más... | |
int | pds_matrix_copy_region_to_region (PdsMatrix *M1, PdsRegionRect R1, const PdsMatrix *M0, PdsRegionRect R0) |
Copia la región R0 de la matriz M0 a la región R1 de la matriz M1. Más... | |
pds_matrix_init | |
int | pds_matrix_init_identity (PdsMatrix *Matrix, PdsRaReal Val) |
Inicia la matriz de tipo puntero PdsMatrix con una diagonal de valor Val y llena el resto de ceros. Matrix=Val*I. Más... | |
int | pds_matrix_init_matrix (PdsMatrix *Matrix, const PdsMatrix *MatSrc) |
Inicia la matriz de tipo puntero PdsMatrix con una matriz. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix=MatSrc. Más... | |
int | pds_matrix_init_value (PdsMatrix *Matrix, PdsRaReal Val) |
Inicia la matriz de tipo puntero PdsMatrix con un valor. Matrix=Val. Más... | |
int | pds_matrix_init_rand (PdsMatrix *Matrix) |
Inicia la matriz de tipo puntero PdsMatrix con valores aleatorios entre 0.0 e 1.0. La función usa internamente la función rand(). Más... | |
int | pds_matrix_init_region (PdsMatrix *Matrix, PdsRegionRect R, PdsRaReal val) |
Inicializa la región R de matriz Matrix con el valor val. Más... | |
pds_matrix_<operator> | |
int | pds_matrix_add_identity (PdsMatrix *Matrix, PdsRaReal Val) |
Suma a la matriz de tipo puntero PdsMatrix con una diagonal de valor Val y suma cero al resto. Matrix=Matrix+Val*I. Más... | |
int | pds_matrix_add_matrix (PdsMatrix *Matrix, const PdsMatrix *MatSrc) |
Suma la matriz de tipo puntero PdsMatrix con una matriz MatSrc y lo carga en Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix=Matrix+MatSrc. Más... | |
int | pds_matrix_add_value (PdsMatrix *Matrix, PdsRaReal Val) |
Suma a la matriz de tipo puntero PdsMatrix un valor. Matrix=Matrix+Val. Más... | |
int | pds_matrix_sub_matrix (PdsMatrix *Matrix, const PdsMatrix *MatSrc) |
Resta la matriz de tipo puntero PdsMatrix con una matriz MatSrc y lo carga en Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix=Matrix-MatSrc. Más... | |
int | pds_matrix_mul_matrix_elements (PdsMatrix *Matrix, const PdsMatrix *MatSrc) |
Multiplica la matriz de tipo puntero PdsMatrix con una matriz MatSrc elemento a elemento y lo carga en Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente. Matrix=Matrix.MatSrc. Más... | |
int | pds_matrix_mul_matrix (PdsMatrix *Matrix, const PdsMatrix *MatSrc1, const PdsMatrix *MatSrc2) |
Multiplica la matriz MatSrc1 (Nlin1xNcol1) con la matriz MatSrc2 (Nlin2xNcol2) y lo carga en Matrix (Nlin1xNcol2). Matrix=MatSrc1*MatSrc2. Más... | |
PdsMatrix * | pds_matrix_mul_matrix_new (const PdsMatrix *MatSrc1, const PdsMatrix *MatSrc2) |
Multiplica la matriz MatSrc1 (Nlin1xNcol1) con la matriz MatSrc2 (Nlin2xNcol2) y devuelve una matriz Matrix (Nlin1xNcol2). Matrix=MatSrc1*MatSrc2. Más... | |
int | pds_matrix_mul_vector (PdsVector *A, const PdsMatrix *M, const PdsVector *V) |
Multiplica la matriz M con el vector V y devuelve un vector A. A=M*V. Más... | |
PdsVector * | pds_matrix_mul_vector_new (const PdsMatrix *M, const PdsVector *V) |
Multiplica la matriz M con el vector V y devuelve un vector A. A=M*V. Más... | |
int | pds_matrix_mul_value (PdsMatrix *Matrix, PdsRaReal Val) |
Multiplica a la matriz de tipo puntero PdsMatrix por un valor. Matrix=Val*Matrix. Más... | |
PdsMatrix * | pds_matrix_transpose_new (const PdsMatrix *M) |
Genera la transpuesta de la matriz. Mt=M^T. Más... | |
int | pds_matrix_transpose (PdsMatrix *Mt, const PdsMatrix *M) |
Genera la transpuesta de la matriz. Mt=M^T. Más... | |
int | pds_matrix_inverse_matrix (const PdsMatrix *Matrix, PdsMatrix *MatInv) |
Invierte la matriz Matrix y la guarda en MatInv. Ambas matrices deben existir y tener el mismo tamanho. MatInv=Matrix^{-1}. Más... | |
PdsMatrix * | pds_matrix_inverse_matrix_new (const PdsMatrix *Matrix) |
Invierte la matriz Matrix y la guarda en MatInv. Ambas matrices deben existir y tener el mismo tamanho. MatInv=Matrix^{-1}. Más... | |
pds_matrix_<methods> | |
PdsMatrix * | pds_matrix_mtm_new (const PdsMatrix *M) |
Genera M^T*M. Más... | |
PdsMatrix * | pds_matrix_mtm_ai_new (const PdsMatrix *M, PdsRaReal Alpha) |
Genera M^T*M + Alpha*I. Más... | |
int | pds_matrix_linear_least_square (const PdsVector *U, const PdsMatrix *H, PdsVector *Z) |
Encuentra Z de modo que intenta satifazer U=HZ. Para conseguir esto usa la siguiente asignación : Z<=(H'H)^(-1)H'U Más... | |
int | pds_matrix_tikhonov_nolinear_least_square (const PdsVector *U, const PdsMatrix *J, const PdsVector *F, PdsRaReal Alpha, PdsVector *Z) |
Encuentra Z iterativamente de modo que intenta satifazer U=F(Z). Usa la siguiente equacion iterativa: Z <= Z + (J'J + Alpha I)^(-1)(J'(U-F(Z))-Alpha Z). Más... | |
int | pds_matrix_reduced_matrix (const PdsMatrix *Matrix, PdsMatrix *MatReduced) |
Reduce la matriz Matrix y la guarda en MatReduced. MatReduced=Reduced{Matrix}. Más... | |
pds_matrix_statistical_<methods> | |
int | pds_matrix_mean (const PdsMatrix *Mat, PdsRaReal *mean) |
Calcula la media de los elementos de la matriz. mean=MEAN{Mat}. Más... | |
int | pds_matrix_std (const PdsMatrix *Mat, PdsRaReal *std) |
Calcula el desvío padrón de los elementos de la matriz. std=STD{Mat}. Más... | |
int | pds_matrix_std_and_mean (const PdsMatrix *Mat, PdsRaReal *std, PdsRaReal *mean) |
Calcula el desvío padrón y la media de los elementos de la matriz. std=STD{Mat}, mean=MEAN{Mat}. Más... | |
int | pds_matrix_corr_matrix (const PdsMatrix *M0, const PdsMatrix *M1, PdsRaReal *pcc) |
Calcula el coeficiente de correlación de Pearson (PCC) entre dos matrices. PCC=corr{M0,M1}. Más... | |
int | pds_matrix_mean_of_region (const PdsMatrix *Mat, PdsRegionRect Rin, PdsRaReal *mean) |
Calcula la media de los elementos de la intersecion de la region con la matriz. mean=MEAN{Mat II Rin}. Más... | |
int | pds_matrix_std_of_region (const PdsMatrix *Mat, PdsRegionRect Rin, PdsRaReal *std) |
Calcula el desvío padrón de los elementos de la intersección de la región con la matriz. std=STD{Mat II Rin}. Más... | |
int | pds_matrix_std_and_mean_of_region (const PdsMatrix *Mat, PdsRegionRect Rin, PdsRaReal *std, PdsRaReal *mean) |
Calcula el desvío padrón y la media de los elementos de la intersección de la región con la matriz. std=STD{Mat II Rin}, mean=MEAN{Mat II Rin}. Más... | |
int | pds_matrix_corr_matrix_of_region (const PdsMatrix *M0, const PdsMatrix *M1, PdsRegionRect R0, PdsRegionRect R1, PdsRaReal *pcc) |
Calcula el coeficiente de correlación de Pearson (PCC) entre los elementos de la intersección de la regiones con sus matrices. Más... | |
pds_matrix_row_<methods> | |
int | pds_matrix_swap_rows (PdsMatrix *Matrix, PdsRaNatural r1, PdsRaNatural r2) |
Intercambia dos lineas de la matriz Matrix. Más... | |
int | pds_matrix_row_add_row_factor (PdsMatrix *Matrix, PdsRaNatural r1, PdsRaNatural r2, PdsRaReal factor) |
Multiplica la linea r2 por un factor y el resulltado lo resta a linea r1. Matrix{r1}=Matrix{r1}+factor*Matrix{r2}. Más... | |
int | pds_matrix_row_mul_factor (PdsMatrix *Matrix, PdsRaNatural r1, PdsRaReal factor) |
Multiplica la linea r1 por un factor y el resulltado lo carga a linea r1. Matrix{r1}=Matrix{r1}*factor. Más... | |
int | pds_matrix_row_div_factor (PdsMatrix *Matrix, PdsRaNatural r1, PdsRaReal factor) |
Divide la linea r1 por un factor y el resulltado lo carga a linea r1. Matrix{r1}=Matrix{r1}/factor. Más... | |
pds_matrix_<printf> | |
int | pds_matrix_printf (const PdsMatrix *Matrix) |
Imprime en pantalla una matriz de tipo puntero PdsMatrix. Más... | |
int | pds_matrix_fprintf (const PdsMatrix *Matrix, FILE *fd) |
Imprime en el archivo que apunta fd una matriz de tipo puntero PdsMatrix. Más... | |
int | pds_matrix_fscanf (PdsMatrix *Matrix, FILE *fd) |
Inicializa una matriz con los datos del archivo apuntado por fd. Usa TAB o un salto de linea como delimitador de elemento. Más... | |
int | pds_matrix_fwrite (PdsMatrix *Matrix, FILE *fd) |
Escribe los datos de una matriz en el archivo binario apuntado por fd. Más... | |
int | pds_matrix_fread (PdsMatrix *Matrix, FILE *fd) |
Inicializa una matriz con los datos del archivo binario apuntado por fd. Más... | |
pds_matrix_<save> | |
int | pds_matrix_save_rgb_bmp (const PdsMatrix *R, const PdsMatrix *G, const PdsMatrix *B, const char *bmpfilename) |
Escribe los datos de una matriz en un archivo de en formato BMP. Más... | |
int | pds_matrix_save_grayscale_bmp (const PdsMatrix *Mat, const char *bmpfilename) |
Escribe los datos de una matriz en un archivo de en formato BMP. Más... | |
int | pds_matrix_save_bmp_with_colormap (const PdsMatrix *Mat, const char *bmpfilename, const unsigned char colormap[256][3]) |
Escribe los datos de una matriz en un archivo de en formato BMP. Más... | |
int | pds_matrix_octave_surf (const PdsMatrix *M, const char *labelx, const char *labely, const char *labelz, const char *octfile, const char *imgfile) |
Imprime una matriz M en un archivo de imagen usando como intermedio un archivo *.m de octave. Usando el comando surf. Más... | |
pds_matrix_get | |
int | pds_matrix_get_value (const PdsMatrix *Matrix, PdsRaNatural x, PdsRaNatural y, PdsRaReal *m) |
Devuelve el valor en la posición (x,y) de la matriz Matrix. (x,y) inicia con (0,0). Más... | |
int | pds_matrix_get_nlines (const PdsMatrix *Matrix, PdsRaNatural *Nlines) |
Devuelve el número de lineas de la matriz Matrix. Más... | |
int | pds_matrix_get_ncolumns (const PdsMatrix *Matrix, PdsRaNatural *Ncolumns) |
Devuelve el número de columnas de la matriz Matrix. Más... | |
int | pds_matrix_get_region_rect (const PdsMatrix *Mat, PdsRegionRect *R) |
Carga la variable PdsRegionRect desde la posicion (0,0), con ancho y alto (Mat->Nlin,Mat->Ncol). Más... | |
int | pds_matrix_get_min_value (const PdsMatrix *Matrix, PdsRaReal *m) |
Devuelve el valor mínimo de los elementos de la matriz Matrix. Más... | |
int | pds_matrix_get_min_value_and_pos (const PdsMatrix *Matrix, PdsRaReal *m, PdsRaNatural *lin, PdsRaNatural *col) |
Devuelve el valor mínimo de los elementos de la matriz Matrix. Más... | |
int | pds_matrix_get_max_value (const PdsMatrix *Matrix, PdsRaReal *m) |
Devuelve el valor máximo de los elementos de la matriz Matrix. Más... | |
int | pds_matrix_get_max_value_and_pos (const PdsMatrix *Matrix, PdsRaReal *m, PdsRaNatural *lin, PdsRaNatural *col) |
Devuelve el valor máximo de los elementos de la matriz Matrix. Más... | |
pds_matrix_set | |
int | pds_matrix_set_value (PdsMatrix *Matrix, PdsRaNatural x, PdsRaNatural y, PdsRaReal m) |
Escribe el valor en la posición (x,y) de la matriz Matrix. En caso de que (x,y) estuvieran fuera de rango, no se considera como error simplemente no se escribe nada. (x,y) inicia con (0,0). Más... | |
#define | PDS_MSET(Matrix, X, Y, m) pds_matrix_set_value(Matrix,X,Y,m) |
pds_matrix_is | |
int | pds_matrix_is_equal (PdsMatrix *M1, PdsMatrix *M2) |
Compara dos matrices. Más... | |
int | pds_matrix_is_quasiequal (PdsMatrix *M1, PdsMatrix *M2, double u) |
Compara dos matrices, y verifica si la diferencia absoluta de cada elemento es menor que un umbral u. Más... | |
int | pds_matrix_is_diagonal (PdsMatrix *M1) |
Verifica si una matriz es diagonal. Más... | |
int | pds_matrix_is_quasidiagonal (PdsMatrix *M1, double u) |
Verifica si una matriz es casi diagonal. Usa un umbral u, qualquier valor menor o igual que u es considerado cero. Más... | |
int | pds_matrix_is_symetric (PdsMatrix *M1) |
Verifica si una matriz es simétrica. Más... | |
int | pds_matrix_is_antisymetric (PdsMatrix *M1) |
Verifica si una matriz es anti simétrica. Más... | |
pds_matrix_<free> | |
void | pds_matrix_free (PdsMatrix *Matrix) |
Libera una matriz de tipo puntero PdsMatrix. Más... | |
void | pds_matrix_destroy (PdsMatrix **Matrix) |
Libera una matriz de tipo puntero PdsMatrix, y limpia el puntero con NULL. Más... | |
Funciones que trabajan con matrices.
Estas funciones trabajan con una matriz de la forma.
Nlin es el número de lineas y Ncol es el número de columnas.
Informacion adicional puede ser encontrada en [1]
#define PDS_OK 1 |
Valor retornado en caso de exito, este es un valor diferente que cero.
Definición en la línea 64 del archivo pdsmatrix.h.
#define PDS_WRONG 0 |
Valor retornado en caso de fracaso, este valor es igual a cero.
Definición en la línea 72 del archivo pdsmatrix.h.
#define PDS_MSET | ( | Matrix, | |
X, | |||
Y, | |||
m | |||
) | pds_matrix_set_value(Matrix,X,Y,m) |
Es equivalente a Matrix(X,Y)=m.
Definición en la línea 1020 del archivo pdsmatrix.h.
PdsMatrix * pds_matrix_new | ( | PdsRaNatural | Nlin, |
PdsRaNatural | Ncol | ||
) |
PdsMatrix * pds_matrix_new_rand | ( | PdsRaNatural | Nlin, |
PdsRaNatural | Ncol | ||
) |
PdsMatrix * pds_matrix_new_load_data | ( | const char * | datafile | ) |
Crea una nueva matriz e inicia los datos con los elementos de la linea line del archivo datafile. Usa TAB como delimitador de elemento y un salto de linea como delimitador de linea. Si se pide una linea inexistente la funcion retorna NULL.
[in] | datafile | Nombre del archivo de donde se cargará los datos iniciales de la matriz. |
int pds_matrix_copy_matrix | ( | PdsMatrix * | Matrix, |
PdsRaNatural | X1, | ||
PdsRaNatural | Y1, | ||
const PdsMatrix * | MatSrc, | ||
PdsRaNatural | X2, | ||
PdsRaNatural | Y2 | ||
) |
Copia en la matriz Matrix en la posicion (X1,Y1) la matriz MatSrc desde la posicion (X2,Y2). Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix(X1,Y1)=MatSrc(X2,Y2).
[in,out] | Matrix | La matriz a copiar. |
[in] | X1 | Linea en la que se copiará. |
[in] | Y1 | Columna en la que se copiará. |
[in] | MatSrc | Matriz que se usara como fuente. |
[in] | X2 | Linea que se copiará. |
[in] | Y2 | Columna que se copiará. |
int pds_matrix_copy_vector_col | ( | PdsMatrix * | Matrix, |
const PdsVector * | VecSrc, | ||
PdsRaNatural | col | ||
) |
Copia vector VecSrc en la columna col de la matriz Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix(:,col)=VecSrc.
[in,out] | Matrix | La matriz a copiar. |
[in] | VecSrc | Vector que se usará como fuente. |
[in] | col | Columna a escribir. |
int pds_matrix_copy_vector_lin | ( | PdsMatrix * | Matrix, |
const PdsVector * | VecSrc, | ||
PdsRaNatural | lin | ||
) |
Copia vector VecSrc en la linea lin de la matriz Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix(:,col)=VecSrc.
[in,out] | Matrix | La matriz a copiar. |
[in] | VecSrc | Vector que se usará como fuente. |
[in] | lin | Linea a escribir. |
int pds_matrix_copy_identity | ( | PdsMatrix * | Matrix, |
PdsRaNatural | X, | ||
PdsRaNatural | Y, | ||
PdsRaReal | Val | ||
) |
Copia en la matriz Matrix una matriz identidad(Val) en la posicion (X,Y). Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix(NLin,NCol)=MatSrc.
[in,out] | Matrix | La matriz a copiar. |
[in] | X | Linea en la que se copiará. |
[in] | Y | Columna en la que se copiará. |
[in] | Val | El valor que será escrito en la diagonal. |
int pds_matrix_copy_region_to_region | ( | PdsMatrix * | M1, |
PdsRegionRect | R1, | ||
const PdsMatrix * | M0, | ||
PdsRegionRect | R0 | ||
) |
Copia la región R0 de la matriz M0 a la región R1 de la matriz M1.
Ambas regiones deben estar dentro de las matrices y tener el mismo tamaño para que la copia sea realizada.
[out] | M1 | La matriz donde se escribirá. |
[in] | R1 | Región en donde se escribirá. |
[in] | M0 | Matriz que se usará como fuente. |
[in] | R0 | Región en donde se leerán los datos. |
Inicia la matriz de tipo puntero PdsMatrix con una diagonal de valor Val y llena el resto de ceros.
Matrix=Val*I.
[in,out] | Matrix | La matriz a iniciar. |
[in] | Val | El valor que será escrito en la diagonal. |
Inicia la matriz de tipo puntero PdsMatrix con una matriz. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix=MatSrc.
[in,out] | Matrix | La matriz a iniciar. |
[in] | MatSrc | Matriz que se usara como fuente. |
Inicia la matriz de tipo puntero PdsMatrix con un valor.
Matrix=Val.
[in,out] | Matrix | La matriz a iniciar con un valor. |
[in] | Val | Es el valor inicial de los elementos. |
int pds_matrix_init_rand | ( | PdsMatrix * | Matrix | ) |
Inicia la matriz de tipo puntero PdsMatrix con valores aleatorios entre 0.0 e 1.0. La función usa internamente la función rand().
[in,out] | Matrix | La matriz a iniciar con un valor. |
int pds_matrix_init_region | ( | PdsMatrix * | Matrix, |
PdsRegionRect | R, | ||
PdsRaReal | val | ||
) |
Inicializa la región R de matriz Matrix con el valor val.
[in,out] | Matrix | La matriz a iniciar con un valor. |
[in] | R | La region a inicializar. |
[in] | val | valor a ser usado en la inicialización. |
Suma a la matriz de tipo puntero PdsMatrix con una diagonal de valor Val y suma cero al resto.
Matrix=Matrix+Val*I.
[in,out] | Matrix | La matriz destino y operando de la suma. |
[in] | Val | El valor que será sumado a la diagonal. |
Suma la matriz de tipo puntero PdsMatrix con una matriz MatSrc y lo carga en Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix=Matrix+MatSrc.
[in,out] | Matrix | La matriz que se usará como destino y operando. |
[in] | MatSrc | Matriz que se sumará a Matrix. |
Suma a la matriz de tipo puntero PdsMatrix un valor.
Matrix=Matrix+Val.
[in,out] | Matrix | La matriz a la cual se le sumará un valor. |
[in] | Val | Es el valor que se sumará a los elementos. |
Resta la matriz de tipo puntero PdsMatrix con una matriz MatSrc y lo carga en Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix=Matrix-MatSrc.
[in,out] | Matrix | La matriz que se usará como destino y operando. |
[in] | MatSrc | Matriz que se sumará a Matrix. |
Multiplica la matriz de tipo puntero PdsMatrix con una matriz MatSrc elemento a elemento y lo carga en Matrix. Si los tamaños son diferentes intersecta los tamaños y hace la copia en la intersección solamente.
Matrix=Matrix.MatSrc.
[in,out] | Matrix | La matriz que se usará como destino y operando. |
[in] | MatSrc | Matriz que se multiplicará a Matrix. |
int pds_matrix_mul_matrix | ( | PdsMatrix * | Matrix, |
const PdsMatrix * | MatSrc1, | ||
const PdsMatrix * | MatSrc2 | ||
) |
Multiplica la matriz MatSrc1 (Nlin1xNcol1) con la matriz MatSrc2 (Nlin2xNcol2) y lo carga en Matrix (Nlin1xNcol2).
Matrix=MatSrc1*MatSrc2.
[in,out] | Matrix | La matriz que se usará como destino, esta matriz ya debe estar creada, todo su contenido será sobrescrito. |
[in] | MatSrc1 | Matriz que se multiplicará a MatSrc2. |
[in] | MatSrc2 | Matriz que se multiplicará a MatSrc1. |
Multiplica la matriz MatSrc1 (Nlin1xNcol1) con la matriz MatSrc2 (Nlin2xNcol2) y devuelve una matriz Matrix (Nlin1xNcol2).
Matrix=MatSrc1*MatSrc2.
[in] | MatSrc1 | Matriz que se multiplicará a MatSrc2. |
[in] | MatSrc2 | Matriz que se multiplicará a MatSrc1. |
Multiplica la matriz M con el vector V y devuelve un vector A.
A=M*V.
[out] | A | Vector donde se cargará la multiplicación. |
[in] | M | Matriz que se multiplicará. |
[in] | V | Vector que se multiplicará. |
Multiplica la matriz M con el vector V y devuelve un vector A.
A=M*V.
[in] | M | Matriz que se multiplicará. |
[in] | V | Vector que se multiplicará. |
Multiplica a la matriz de tipo puntero PdsMatrix por un valor.
Matrix=Val*Matrix.
[in,out] | Matrix | La matriz a la cual se le multiplicará un valor. |
[in] | Val | Es el valor que se sumará a los elementos. |
Genera la transpuesta de la matriz.
Mt=M^T.
[in] | M | La matriz a la cual se le aplicará la transpuesta. |
Genera la transpuesta de la matriz.
Mt=M^T.
[in] | Mt | La transpuesta de la matriz M. |
[in] | M | La matriz a la cual se le aplicará la transpuesta. |
Invierte la matriz Matrix y la guarda en MatInv. Ambas matrices deben existir y tener el mismo tamanho.
MatInv=Matrix^{-1}.
[in] | Matrix | La matriz de en consulta. |
[out] | MatInv | Matriz inversa. |
Invierte la matriz Matrix y la guarda en MatInv. Ambas matrices deben existir y tener el mismo tamanho.
MatInv=Matrix^{-1}.
[in] | Matrix | La matriz de en consulta. |
Genera
M^T*M.
[in] | M | La matriz a la cual se le aplicará la operación. |
Genera
M^T*M + Alpha*I.
[in] | M | La matriz a la cual se le aplicará la operación. |
[in] | Alpha | Factor que se multiplicará a la identidad. |
Encuentra Z de modo que intenta satifazer U=HZ. Para conseguir esto usa la siguiente asignación :
Z<=(H'H)^(-1)H'U
[in] | U | Valor de salida del sistema de ecuaciones U=HZ. |
[in] | H | Matriz del sistema. |
[out] | Z | Incognita del sistema, aquí es cargado el resultado. |
int pds_matrix_tikhonov_nolinear_least_square | ( | const PdsVector * | U, |
const PdsMatrix * | J, | ||
const PdsVector * | F, | ||
PdsRaReal | Alpha, | ||
PdsVector * | Z | ||
) |
Encuentra Z iterativamente de modo que intenta satifazer U=F(Z). Usa la siguiente equacion iterativa:
Z <= Z + (J'J + Alpha I)^(-1)(J'(U-F(Z))-Alpha Z).
[in] | U | Valor de salida del sistema de ecuaciones. |
[in] | J | matriz jacobiano de F con respecto a Z. |
[in] | F | Vector que depende de Z. |
[in] | Alpha | Factor de regularización. |
[out] | Z | Incognita del sistema, aquí es cargado el resultado. |
Reduce la matriz Matrix y la guarda en MatReduced.
MatReduced=Reduced{Matrix}.
Una matriz es reducida cuando: Es una matriz escalonada. Sus pivotes son todos iguales a 1 En cada fila el pivote es el único elemento no nulo de su columna
[in] | Matrix | La matriz de en consulta. |
[out] | MatReduced | Matriz reducida. |
Calcula la media de los elementos de la matriz.
mean=MEAN{Mat}.
[in] | Mat | La matriz a calcular. |
[out] | mean | Media. |
Calcula el desvío padrón de los elementos de la matriz.
std=STD{Mat}.
[in] | Mat | La matriz a calcular. |
[out] | std | Desvío padrón. |
Calcula el desvío padrón y la media de los elementos de la matriz.
std=STD{Mat},
mean=MEAN{Mat}.
[in] | Mat | La matriz a calcular. |
[out] | std | Desvío padrón. |
[out] | mean | Media. |
Calcula el coeficiente de correlación de Pearson (PCC) entre dos matrices.
PCC=corr{M0,M1}.
[in] | M0 | Una matriz de la correlación. |
[in] | M1 | Una matriz de la correlación. |
[out] | pcc | Coeficiente de correlación de Pearson. |
int pds_matrix_mean_of_region | ( | const PdsMatrix * | Mat, |
PdsRegionRect | Rin, | ||
PdsRaReal * | mean | ||
) |
Calcula la media de los elementos de la intersecion de la region con la matriz.
mean=MEAN{Mat II Rin}.
[in] | Mat | La matriz usar. |
[in] | Rin | La region a calcular. |
[out] | mean | Media. |
int pds_matrix_std_of_region | ( | const PdsMatrix * | Mat, |
PdsRegionRect | Rin, | ||
PdsRaReal * | std | ||
) |
Calcula el desvío padrón de los elementos de la intersección de la región con la matriz.
std=STD{Mat II Rin}.
[in] | Mat | La matriz usar. |
[in] | Rin | La región a calcular. |
[out] | std | Desvío padrón. |
int pds_matrix_std_and_mean_of_region | ( | const PdsMatrix * | Mat, |
PdsRegionRect | Rin, | ||
PdsRaReal * | std, | ||
PdsRaReal * | mean | ||
) |
Calcula el desvío padrón y la media de los elementos de la intersección de la región con la matriz.
std=STD{Mat II Rin},
mean=MEAN{Mat II Rin}.
[in] | Mat | La matriz usar. |
[in] | Rin | La región a calcular. |
[out] | std | Desvío padrón. |
[out] | mean | Media. |
int pds_matrix_corr_matrix_of_region | ( | const PdsMatrix * | M0, |
const PdsMatrix * | M1, | ||
PdsRegionRect | R0, | ||
PdsRegionRect | R1, | ||
PdsRaReal * | pcc | ||
) |
Calcula el coeficiente de correlación de Pearson (PCC) entre los elementos de la intersección de la regiones con sus matrices.
El tamaño de las regiones son re-dimensionadas al ancho y alto de menor longitud en las regiones; solo se retorna PDS_WRONG cuando el ancho o el alto de las regiones sea cero.
Las regiones rectangulares son definidas como un punto en la esquina superior izquierda mas el alto y ancho.
Si solo un desvío padrón es cero entonces la correlación se considera 0.0. Si ambos desvío padrón son cero entonces la correlación se considera 1.0 si los signos de las medias son iguales y son diferentes de cero, -1.0 si los signos de las medias son diferentes y son diferentes de cero, 0.0 se alguna media es cero y 1.0 se ambas medias son cero.
[in] | M0 | Una matriz de la correlación. |
[in] | M1 | Una matriz de la correlación. |
[in] | R0 | La región a analizar en la matriz M0. |
[in] | R1 | La región a analizar en la matriz M1. |
[out] | pcc | Coeficiente de correlación de Pearson. |
int pds_matrix_swap_rows | ( | PdsMatrix * | Matrix, |
PdsRaNatural | r1, | ||
PdsRaNatural | r2 | ||
) |
Intercambia dos lineas de la matriz Matrix.
[in,out] | Matrix | La matriz de en consulta. |
[in] | r1 | La linea a intercambiar con r2. |
[in] | r2 | La linea a intercambiar con r1. |
int pds_matrix_row_add_row_factor | ( | PdsMatrix * | Matrix, |
PdsRaNatural | r1, | ||
PdsRaNatural | r2, | ||
PdsRaReal | factor | ||
) |
Multiplica la linea r2 por un factor y el resulltado lo resta a linea r1.
Matrix{r1}=Matrix{r1}+factor*Matrix{r2}.
[in,out] | Matrix | La matriz de en consulta. |
[in] | r1 | La linea r1. |
[in] | r2 | La linea r2. |
[in] | factor | Factor que multiplicará a la linea r2. |
int pds_matrix_row_mul_factor | ( | PdsMatrix * | Matrix, |
PdsRaNatural | r1, | ||
PdsRaReal | factor | ||
) |
Multiplica la linea r1 por un factor y el resulltado lo carga a linea r1.
Matrix{r1}=Matrix{r1}*factor.
[in,out] | Matrix | La matriz de en consulta. |
[in] | r1 | La linea r1. |
[in] | factor | Factor que multiplicará a la linea r1. |
int pds_matrix_row_div_factor | ( | PdsMatrix * | Matrix, |
PdsRaNatural | r1, | ||
PdsRaReal | factor | ||
) |
Divide la linea r1 por un factor y el resulltado lo carga a linea r1.
Matrix{r1}=Matrix{r1}/factor.
[in,out] | Matrix | La matriz de en consulta. |
[in] | r1 | La linea r1. |
[in] | factor | Factor que dividirá a la linea r1. |
int pds_matrix_printf | ( | const PdsMatrix * | Matrix | ) |
Imprime en pantalla una matriz de tipo puntero PdsMatrix.
[in] | Matrix | La matriz a imprimir en pantalla. |
int pds_matrix_fprintf | ( | const PdsMatrix * | Matrix, |
FILE * | fd | ||
) |
Imprime en el archivo que apunta fd una matriz de tipo puntero PdsMatrix.
[in] | Matrix | La matriz a imprimir en fd. |
[in,out] | fd | El puntero al archivo. |
int pds_matrix_fscanf | ( | PdsMatrix * | Matrix, |
FILE * | fd | ||
) |
Inicializa una matriz con los datos del archivo apuntado por fd. Usa TAB o un salto de linea como delimitador de elemento.
[in] | Matrix | Matriz en donde se cargaran los datos. |
[in] | fd | Apuntador del archivo de donde se cargará los datos iniciales de la matriz. |
int pds_matrix_fwrite | ( | PdsMatrix * | Matrix, |
FILE * | fd | ||
) |
Escribe los datos de una matriz en el archivo binario apuntado por fd.
[in] | Matrix | Matrix de donde se leeran los datos. |
[in] | fd | Apuntador del archivo binario de donde se escribiran los datos de la matriz. |
int pds_matrix_fread | ( | PdsMatrix * | Matrix, |
FILE * | fd | ||
) |
Inicializa una matriz con los datos del archivo binario apuntado por fd.
[in] | Matrix | Matrix en donde se cargaran los datos. |
[in] | fd | Apuntador del archivo binario de donde se cargará los datos iniciales de la matriz. |
int pds_matrix_save_rgb_bmp | ( | const PdsMatrix * | R, |
const PdsMatrix * | G, | ||
const PdsMatrix * | B, | ||
const char * | bmpfilename | ||
) |
Escribe los datos de una matriz en un archivo de en formato BMP.
[in] | R | Matriz donde se leerán los datos de color rojo. 0<= r<= 255 |
[in] | G | Matriz donde se leerán los datos de color verde. 0<= g<= 255 |
[in] | B | Matriz donde se leerán los datos de color azul. 0<= b<= 255 |
[in] | bmpfilename | Nombre del archivo donde se escribirán los datos de la matriz. |
int pds_matrix_save_grayscale_bmp | ( | const PdsMatrix * | Mat, |
const char * | bmpfilename | ||
) |
Escribe los datos de una matriz en un archivo de en formato BMP.
[in] | Mat | Matriz donde se leerán los datos de escala de gris. 0<= r<= 255 |
[in] | bmpfilename | Nombre del archivo donde se escribirán los datos de la matriz. |
int pds_matrix_save_bmp_with_colormap | ( | const PdsMatrix * | Mat, |
const char * | bmpfilename, | ||
const unsigned char | colormap[256][3] | ||
) |
Escribe los datos de una matriz en un archivo de en formato BMP.
[in] | Mat | Matriz donde se leerán los datos de escala de gris. 0<= r<= 255 |
[in] | bmpfilename | Nombre del archivo donde se escribirán los datos |
[in] | colormap | Mapa de colores. Ejemplo: PDS_COLORMAP_JET, PDS_COLORMAP_BONE, PDS_COLORMAP_HOT,PDS_COLORMAP_JOLLY. |
pds_matrix_octave_surf | ( | const PdsMatrix * | M, |
const char * | labelx, | ||
const char * | labely, | ||
const char * | labelz, | ||
const char * | octfile, | ||
const char * | imgfile | ||
) |
Imprime una matriz M en un archivo de imagen usando como intermedio un archivo *.m de octave. Usando el comando surf.
[in] | M | Matriz a imprimir. |
[in] | labelx | Etiqueta del eje X: Columnas. |
[in] | labely | Etiqueta del eje Y: Lineas. |
[in] | labelz | Etiqueta del eje Z: Altura. |
[in] | octfile | Nombre del archivo *.m de octave que se usará de intermediario. Si octfile==NULL entonces se creará un fichero con nombre aleatorio y se borrará al terminar de crear el archivo de imagen. |
[in] | imgfile | Nombre del archivo de imagen generado. El tipo de archivo es seleccionado por la extensión del nombre imgfile. |
int pds_matrix_get_value | ( | const PdsMatrix * | Matrix, |
PdsRaNatural | x, | ||
PdsRaNatural | y, | ||
PdsRaReal * | m | ||
) |
Devuelve el valor en la posición (x,y) de la matriz Matrix. (x,y) inicia con (0,0).
[in] | Matrix | La matriz de en consulta. |
[in] | x | Linea de posición x, el primer valor es cero. |
[in] | y | Columna de posición y, el primer valor es cero. |
[out] | m | El valor en la posición (x,y), en caso de error por fuera de rango (x,y) entonces carga 0, en caso de error de matriz nula carga cero. |
int pds_matrix_get_nlines | ( | const PdsMatrix * | Matrix, |
PdsRaNatural * | Nlines | ||
) |
Devuelve el número de lineas de la matriz Matrix.
[in] | Matrix | La matriz de en consulta. |
[out] | Nlines | En donde se guardará el número de lineas de la matriz Matrix. |
int pds_matrix_get_ncolumns | ( | const PdsMatrix * | Matrix, |
PdsRaNatural * | Ncolumns | ||
) |
Devuelve el número de columnas de la matriz Matrix.
[in] | Matrix | La matriz de en consulta. |
[out] | Ncolumns | En donde se guardará el número de columnas de la matriz Matrix. |
int pds_matrix_get_region_rect | ( | const PdsMatrix * | Mat, |
PdsRegionRect * | R | ||
) |
Carga la variable PdsRegionRect desde la posicion (0,0), con ancho y alto (Mat->Nlin,Mat->Ncol).
[in] | Mat | matriz de donde se generará la region. |
[in] | R | La region que representa la matriz Mat. |
Devuelve el valor mínimo de los elementos de la matriz Matrix.
[in] | Matrix | La matriz de en consulta. |
[out] | m | El valor mínimo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_WRONG. |
int pds_matrix_get_min_value_and_pos | ( | const PdsMatrix * | Matrix, |
PdsRaReal * | m, | ||
PdsRaNatural * | lin, | ||
PdsRaNatural * | col | ||
) |
Devuelve el valor mínimo de los elementos de la matriz Matrix.
[in] | Matrix | La matriz de en consulta. |
[out] | m | El valor mínimo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_WRONG. |
[out] | lin | La linea del valor mínimo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_OK. |
[out] | col | La columna del valor mínimo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_OK. |
Devuelve el valor máximo de los elementos de la matriz Matrix.
[in] | Matrix | La matriz de en consulta. |
[out] | m | El valor máximo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_WRONG. |
int pds_matrix_get_max_value_and_pos | ( | const PdsMatrix * | Matrix, |
PdsRaReal * | m, | ||
PdsRaNatural * | lin, | ||
PdsRaNatural * | col | ||
) |
Devuelve el valor máximo de los elementos de la matriz Matrix.
[in] | Matrix | La matriz de en consulta. |
[out] | m | El valor máximo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_WRONG. |
[out] | lin | La linea del valor máximo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_OK. |
[out] | col | La columna del valor máximo de los elementos de la matriz Matrix. Si este parámetro es NULL la función retorna PDS_OK. |
int pds_matrix_set_value | ( | PdsMatrix * | Matrix, |
PdsRaNatural | x, | ||
PdsRaNatural | y, | ||
PdsRaReal | m | ||
) |
Escribe el valor en la posición (x,y) de la matriz Matrix. En caso de que (x,y) estuvieran fuera de rango, no se considera como error simplemente no se escribe nada. (x,y) inicia con (0,0).
[in,out] | Matrix | La matriz a modificar. |
[in] | x | Linea de posición x, el primer valor es cero. |
[in] | y | Columna de posición y, el primer valor es cero. |
[in] | m | Valor real que se colocara en (x,y). |
Compara dos matrices.
[in] | M1 | La matriz a comparar com M2. |
[in] | M2 | La matriz a comparar com M1. |
Compara dos matrices, y verifica si la diferencia absoluta de cada elemento es menor que un umbral u.
[in] | M1 | La matriz a comparar com M2. |
[in] | M2 | La matriz a comparar com M1. |
[in] | u | Es el umbrarl a testar. |
int pds_matrix_is_diagonal | ( | PdsMatrix * | M1 | ) |
Verifica si una matriz es diagonal.
Una matriz es diagonal cuando sus elementos exteriores a la diagonal principal son nulos. Una matriz nula (llena de ceros) tambien es diagonal.
[in] | M1 | La matriz a verificar su diagonalidad. |
int pds_matrix_is_quasidiagonal | ( | PdsMatrix * | M1, |
double | u | ||
) |
Verifica si una matriz es casi diagonal. Usa un umbral u, qualquier valor menor o igual que u es considerado cero.
Una matriz es diagonal cuando sus elementos exteriores a la diagonal principal son nulos. Una matriz nula (llena de ceros) tambien es diagonal.
[in] | M1 | La matriz a verificar su diagonalidad. |
[in] | u | Es el umbral bajo el cual todo lo demas se considera cero. |
int pds_matrix_is_symetric | ( | PdsMatrix * | M1 | ) |
Verifica si una matriz es simétrica.
Una matriz es simétrica si coincide con su transpuesta.
[in] | M1 | La matriz a verificar su simetria. |
int pds_matrix_is_antisymetric | ( | PdsMatrix * | M1 | ) |
Verifica si una matriz es anti simétrica.
Una matriz es anti simétrica cuando el opuesto de esta coincide con su transpuesta. De esto se deduce que los elementos de la diagonal son nulos.
M1^t=-M1.
[in] | M1 | La matriz a verificar su anti simetria. |
void pds_matrix_free | ( | PdsMatrix * | Matrix | ) |
Libera una matriz de tipo puntero PdsMatrix.
[in,out] | Matrix | La matriz a liberar. |