📄 matrix_def.h
字号:
//////////////////////////////////////////////////////
// programmer : tufan biyiktas
// email : tfn@mail.ege.edu.tr
// date : March, 7 2005
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
// HEADER FILES
//////////////////////////////////////////////////////
#include "matrix_err.h"
//////////////////////////////////////////////////////
// Definition : rom matrix_err.h to indicate which error occured
//////////////////////////////////////////////////////
extern int error_num;
//////////////////////////////////////////////////////
// Definition : matrix data sructure definition
//////////////////////////////////////////////////////
typedef struct{
int row_size, // size of row
col_size; // size of col
float *data; // data pointer
}matrix_t;
//////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////
/* 1 */ void matrix_init(matrix_t *matrix);
/* 2 */ void matrix_set_size(matrix_t *matrix,int row_size,int col_size);
/* 3 */ int matrix_allocate(matrix_t *matrix,int row_size,int col_size);
/* 4 */ void matrix_remove(matrix_t *matrix);
/* 5 */ void matrix_set_data(matrix_t *matrix,int row,int colon, float item);
/* 6 */ float matrix_get_data(matrix_t matrix,int row,int colon);
/* 7 */ void matrix_copy(matrix_t matrix_a,matrix_t *matrix_b);
/* 8 */ int matrix_build(matrix_t *matrix,int row_size,int col_size,char *fname);
/* 9 */ int matrix_fprint(matrix_t matrix , char *fname);
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
// Definition : init given matrix
//////////////////////////////////////////////////////
void matrix_init(matrix_t *matrix){
matrix->row_size = 0;
matrix->col_size = 0;
matrix->data = 0;
}
//////////////////////////////////////////////////////
// Definition : define row & col sizes of given matrix
//////////////////////////////////////////////////////
void matrix_set_size(matrix_t *matrix,int row_size,int col_size){
matrix_init(matrix);
matrix->row_size = row_size;
matrix->col_size = col_size;
}
//////////////////////////////////////////////////////
// Definition : get memory for given matrix
//////////////////////////////////////////////////////
int matrix_allocate(matrix_t *matrix,int row_size,int col_size){
// error --> 0
// success -> 1
matrix_set_size(matrix,row_size,col_size);
matrix->data = (float *)malloc(sizeof(float)*(matrix->row_size*matrix->col_size));
if(!matrix->data){
error_num=0;
matrix_error_print();
return 0;
}
return 1;
}
//////////////////////////////////////////////////////
// Definition : remove matrix from memory
//////////////////////////////////////////////////////
void matrix_remove(matrix_t *matrix){
free(matrix->data);
}
//////////////////////////////////////////////////////
// Definition : set matrix data at the given row&col
//////////////////////////////////////////////////////
void matrix_set_data(matrix_t *matrix,int row,int colon, float item){
*(matrix->data + row*matrix->col_size +colon) = item;
}
//////////////////////////////////////////////////////
// Definition : get matrix data at the given row&col
//////////////////////////////////////////////////////
float matrix_get_data(matrix_t matrix,int row,int colon){
return *(matrix.data + row*matrix.col_size +colon);
}
//////////////////////////////////////////////////////
// Definition : copy the first matrix to the second
//////////////////////////////////////////////////////
void matrix_copy(matrix_t matrix_a,matrix_t *matrix_b){
int row,col;
matrix_allocate(matrix_b,matrix_a.row_size,matrix_a.col_size);
for(row=0;row<matrix_a.row_size;row++){
for(col=0;col<matrix_a.col_size;col++){
matrix_set_data(matrix_b,row,col,matrix_get_data(matrix_a,row,col));
}
}
}
//////////////////////////////////////////////////////
// Definition : build matrix from the given file with the given dims
//////////////////////////////////////////////////////
int matrix_build(matrix_t *matrix,int row_size,int col_size,char *fname){
// error --> 0
// success -> 1
FILE *fd;
float data;
int row,col;
matrix_allocate(matrix,row_size,col_size);
fd = fopen(fname,"r");
if(!fd){
error_num=1;
matrix_error_print();
return 0;
}
for(row=0;row<row_size;row++){
for(col=0;col<col_size;col++){
fscanf(fd,"%f ",&data);
matrix_set_data(matrix,row,col,data);
}
}
fclose(fd);
return 1;
}
//////////////////////////////////////////////////////
// Definition : print content of the given matrix to the given file
//////////////////////////////////////////////////////
int matrix_fprint(matrix_t matrix , char *fname){
// error --> 0
// success -> 1
int row,col;
FILE *fd;
fd = fopen(fname,"w");
if(!fd){
error_num=2;
matrix_error_print();
return 0;
}
for(row=0;row<matrix.row_size;row++){
for(col=0;col<matrix.col_size;col++){
//fprintf(fd,"%f ",*(matrix.data+row*matrix.size+col));
fprintf(fd,"%f ",matrix_get_data(matrix,row,col));
}
fprintf(fd,"%s","\n");
}
fclose(fd);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -