⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io_mat.c

📁 关于生物光学程序的代码
💻 C
字号:
#include <stdarg.h>#include <mat.h>#include <matrix.h>#include "io_mat.h"static void *get_img(int ht, int wd, size_t size);static void *get_spc(int num, size_t size);#ifdef MATLAB5int write_mat_float_image(  float **img,        /* 2-D image of size img[ht][wd] */  int   ht,           /* height of image */  int   wd,           /* width of image */  char  *matrix_name, /* name of matlab matrix */  MATFile *fout       /* matlab mat file pointer */  ){  mxArray *a;  double *dpt;  int    i,j,status;  a = mxCreateDoubleMatrix(wd,ht,mxREAL);  dpt = mxGetPr(a);  for(i=0; i<ht; i++)  for(j=0; j<wd; j++) {    dpt[i*wd+j] = img[i][j];  }  mxSetName(a,matrix_name);  status = matPutArray(fout,a);  mxDestroyArray(a);  return(status);}int write_mat_float_image_cor(  float **img,        /* 2-D image of size img[ht][wd] */  int   ht,           /* height of image */  int   wd,           /* width of image */  char  *matrix_name, /* name of matlab matrix */  MATFile *fout       /* matlab mat file pointer */  ){  mxArray *a;  double *dpt;  int    i,j,status;  a = mxCreateDoubleMatrix(ht,wd,mxREAL);  dpt = mxGetPr(a);  for(i=0; i<wd; i++)  for(j=0; j<ht; j++) {    dpt[i*ht+j] = img[j][i];  }  mxSetName(a,matrix_name);  status = matPutArray(fout,a);  mxDestroyArray(a);  return(status);}float **read_mat_float_image(/* Returns pointer to 2-D image of size img[ht][wd] */  int   *ht,           /* height of image */  int   *wd,           /* width of image */  char  *matrix_name,  /* name of matlab matrix */  MATFile *fin         /* pointer to file */  ){  mxArray *a;  int     i,j;  double *dpt;  float  **img;  a = matGetArray(fin,matrix_name);  if(a!=NULL) {    *wd = mxGetM(a);    *ht = mxGetN(a);    dpt = mxGetPr(a);    img = (float **)get_img(*ht,*wd,sizeof(float));    for(i=0; i<*ht; i++)    for(j=0; j<*wd; j++) {      img[i][j] = dpt[i*(*wd)+j];    }  }  else  img = NULL;  mxDestroyArray(a);  return(img);}#elseint write_mat_float_image(  float **img,        /* 2-D image of size img[ht][wd] */  int   ht,           /* height of image */  int   wd,           /* width of image */  char  *matrix_name, /* name of matlab matrix */  MATFile *fout       /* matlab mat file pointer */  ){  Matrix *a;  double *dpt;  int    i,j,status;  a = mxCreateFull(wd,ht,REAL);  dpt = mxGetPr(a);  for(i=0; i<ht; i++)  for(j=0; j<wd; j++) {    dpt[i*wd+j] = img[i][j];  }  mxSetName(a,matrix_name);  status = matPutMatrix(fout,a);  mxFreeMatrix(a);  return(status);}int write_mat_float_image_cor(  float **img,        /* 2-D image of size img[ht][wd] */  int   ht,           /* height of image */  int   wd,           /* width of image */  char  *matrix_name, /* name of matlab matrix */  MATFile *fout       /* matlab mat file pointer */  ){  Matrix *a;  double *dpt;  int    i,j,status;  a = mxCreateFull(ht,wd,REAL);  dpt = mxGetPr(a);  for(i=0; i<wd; i++)  for(j=0; j<ht; j++) {    dpt[i*ht+j] = img[j][i];  }  mxSetName(a,matrix_name);  status = matPutMatrix(fout,a);  mxFreeMatrix(a);  return(status);}float **read_mat_float_image(/* Returns pointer to 2-D image of size img[ht][wd] */  int   *ht,           /* height of image */  int   *wd,           /* width of image */  char  *matrix_name,  /* name of matlab matrix */  MATFile *fin         /* pointer to file */  ){  Matrix *a;  int     i,j;  double *dpt;  float  **img;  a = matGetMatrix(fin,matrix_name);  if(a!=NULL) {    *wd = mxGetM(a);    *ht = mxGetN(a);    dpt = mxGetPr(a);    img = (float **)get_img(*ht,*wd,sizeof(float));    for(i=0; i<*ht; i++)    for(j=0; j<*wd; j++) {      img[i][j] = dpt[i*(*wd)+j];    }  }  else  img = NULL;  mxFreeMatrix(a);  return(img);}#endifstatic void *get_img(int ht, int wd, size_t size){  char *pt;  void **img;  int i;  pt = (char *)get_spc(ht*wd, size );  img = (void **)get_spc(ht, sizeof(void *) );  for(i=0; i<ht; i++)    img[i] = (void *)(pt + i*wd*size);  return(img);}static void *get_spc(int num, size_t size){	void *pt;	if( (pt=(void *)calloc((size_t)num,size)) == NULL ) {		fprintf(stderr, "\nERROR: tdf_get_spc ==> calloc() error\n");		exit(-1);		}	return(pt);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -