3. 程序举例
目录下有 AA.mat 文件,内有一个名为 AMatrix 的 double 类型矩阵。代码如下:
#include <stdio.h>
#include <stdlib.h>
#include "mat.h"
#include "iostream.h"
#include "mex.h"
#include "matrix.h"
int main()
{
MATFile *pmat;
const char **dir;
const char *file;
const char *name;
int ndir;
mxArray *pa;
file="E://c++//exe//AA.mat";// 双反斜杠防止转义
pmat=matOpen(file, "r");// 打开文件,返回指向文件指针
if (pmat == NULL) {
cout<<"Error opening file:"<<file<<endl;
return(1);
}
dir = (const char **)matGetDir(pmat, &ndir);
//ndir 表示 mat 文件中含有矩阵数目
if (dir == NULL) {
cout<<"Error reading directory of file:"<<file<<endl;
return(1);
}
else
{
cout<<"Directory of file:"<<file<<endl;
for (i=0; i < ndir; i++)
cout<<dir[i]<<endl;// 输出所含矩阵数目
}*/
pmat=matOpen(file, "r");// 重新打开文件
pa = matGetNextVariable(pmat, &name);
// 返回指向文件头文件信息的指针,指针类型为 *mxArray
//name 是矩阵的名字
cout<<name<<endl;
pmat=matOpen(file, "r");
int ii=mxGetM(pa);// 矩阵行数
int jj=mxGetN(pa);// 矩阵列数
pm=mxGetPr(pa); // 获取矩阵数值,返回指向矩阵第一数值的指针
cout<<*(pm++)<<endl;// 输出数据
cout<<*(pm++)<<endl; // 输出数据
// cout<<*(pm++)<<endl;…
mxFree(dir);
return(1);
}