matlab文件的基本操作

mat文件格式是matlab文件的特有格式文件,mat文件存储了matlab的包含的多个矩阵的数据信息以及约定的matlab阵列头信息。由于matlab普及程度,将文件保存成mat文件格式可以极大的增加软件的适用性。

以下记录了VC++保存matlab的mat文件的方法:

matlab相关的API函数            

MAT 函 数 功能
matOpen 打开 MAT 文件
matClose 关闭 MAT 文件
matGetDir 从 MAT 文件中获得 MATLAB 阵列的列表
matGetFp 获得一个指向MAT 文件的ANSI C 文件指针
matGetVariable 从MAT文件中读取MATLAB阵列
matPutVariable 写MATLAB阵列到MAT文件
matGetNextVariable 从MAT文件中读取下一个MATLAB阵列
matDeleteVariable 从MAT文件中删去下一个MATLAB阵列
matPutVariableAsGlobal 从MATLAB阵列写入到MAT文件中
matGetVariableInfo 从MAT文件中读取MATLAB阵列头信息
matGetNextVariableInfo 从MAT文件中读取下一个MATLAB阵列头信息

表格中是所用到的主要的MATLAB 的API函数

读取MAT文件

/***************************************************************************************************************************
实现了从mat文件中读取矩阵数据,并且存储在CString变量data中

***************************************************************************************************************************/
MATFile *pMF = NULL;    //mat文件
mxArray *pA  = NULL;   //矩阵指针
double *A;    //数据指针
const char **dir;
int ndir;
int i,j;
int m,n;
//开启CFileDialog函数进行文件选取
CFileDialog dlgFileOpen(TRUE,"matlab(*.mat)|*.mat","*.mat",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT ,"matlab(*.mat)");
CString lpstrFilename;
if(dlgFileOpen.DoModal()==IDOK)
    lpstrFilename = dlgFileOpen.GetPathName();
pMF = matOpen(lpstrFilename,"r");
dir = (const char **)matGetDir(pMF,&ndir);

CString str;
CString data;
       
//matlab中的矩阵式按列显示的
for (i =0 ;i <ndir;i++)
{
    str.Format("%s",dir[i]);  
    pA = matGetVariable(pMF,str);   //从mat文件中获取数据
    m = mxGetM(pA);     //获取数据的行数
    n = mxGetN(pA);      //获取数据的列数
    A = mxGetPr(pA);    //获取矩阵数据地址
    for (i=0;i<m;i++)
    {
        for (j=0;j<n;j++)
        data.Format("%f",A[j*m+i]);
    }
}
mxFree(dir);
mxDestroyArray(pA);
matClose(pMF);

保存mat文件

未完待续!

原文地址:https://www.cnblogs.com/jackcin/p/3235079.html