matdemo.c

来自「matlab 和c或者c++ 接口程序」· C语言 代码 · 共 122 行

C
122
字号
 #include<stdio.h>
#include"mat.h"
#include"matrix.h"
int matcreate(const char*file)
{MATFile *pmatfile;
mxArray *pa1,*pa2,*pa3;
double data1[9]={1,2,3,4,5,6,7,8,9};
double data2[9]={11,12,13,14,15,16,17,18,19};
printf("creating file %s....\n\n",file);
pmatfile=matOpen(file,"w");
if(pmatfile==NULL)
{printf("error creating file ");
		return(1);
}
pa1=mxCreateDoubleMatrix(3,3,mxREAL);
//mxSetName(pa1,"LDdata");
memcpy ((char*)(mxGetPr(pa1)),(char*) data1,3*3*sizeof(double));
pa2=mxCreateDoubleMatrix(3,3,mxREAL);
//mxSetName(pa2,"GDdata");
memcpy((char*)(mxGetPr(pa2)),(char*) data2,3*3*sizeof(double));
pa3=mxCreateString("we teach you use the mat function");
//mxSetName(pa3,"GSdata");
///write this data to mat files

matPutVariable(pmatfile,"LDdata",pa1);
matPutVariableAsGlobal(pmatfile,"GDdata",pa2);
matPutVariableAsGlobal(pmatfile,"GSdata",pa3);
mxDestroyArray(pa1);
mxDestroyArray(pa2);
mxDestroyArray(pa3);
if(matClose(pmatfile)!=0)
{printf("Error closingfile ");
return(1);
}

}


int matread(const char* file)
{
 MATFile* pmat;
 char * * dir;
 int ndir;
 int i;
 mxArray *pa;
 printf("reading file->..\n");
 pmat=matOpen(file,"r");
 if(pmat==NULL)
 {printf("error opening file \n");
 return(1);
 }

 dir=matGetDir(pmat,&ndir);
 if(dir=NULL)
 {printf("error reading directory of file  %s",file);
 }
 else
 {printf(" Direcotry of %s\n" ,file);
 for (i=0;i<ndir;i++)
 {printf("%s \n",dir[i]);
 }
 }
 mxFree(dir);
 if(matClose(pmat)!=0)
 {printf("errror closing file..\n");
 return(1);
 }

 printf("examing the header for each variable \n");
 pmat=matOpen(file,"r");
 for(i=0;i<ndir;i++)
 {//pa=matGetNextVariableInfo(pmat);
 if(pa==NULL)
 {printf("error reading file header \n");
 return(1);
 }
// printf("array %s dimension has %d dimensions",mxGetName(pa),mxGetNumberOfDimensions(pa));
 if(mxIsFromGlobalWS(pa) )
	 printf(" is a global variable when saved \n");
 else
     printf(" is a loacal variable when saved \n");

if(matClose(pmat)!=0)
 {printf("errror closing file..\n");
 return(1);
 }
 pmat=matOpen(file,"r");
 if(pmat==NULL)
 {printf("error opening file \n");
 return(1);
 }

 printf("\n reading the actual array contents \n");
 for(i=0;i<ndir;i++)
 {
 pa=matGetNextVariable(pmat,"LDdata")  ;
 if(pa==NULL)
 {printf("error reading contents \n");
 return(1);
 }
 //printf("according contents array %s dimension has %d dimensions",mxGetName(pa),mxGetNumberOfDimensions(pa));
 if(mxIsFromGlobalWS(pa) )
	 printf(" is a global variable when saved \n");
 else
     printf(" is a loacal variable when saved \n");

if(matClose(pmat)!=0)
 {printf("errror closing file..\n");
 return(1);
 }

 
 }
 }

}

int main()
{int createresult,readresult,result;
createresult=matcreate("mattest.mat");
readresult=matread("mattest.mat");
}

⌨️ 快捷键说明

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