视频
拓展学习
#include "mat.h"
#include <iostream>
using namespace std;
int main()
{
MATFile *pmat; /* 定义MAT文件指针*/
mxArray *pa1, *pa2, *pa3;
//定义要写入的数据
double data[9] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9};
const char *file = "mattest.mat";//定义要操作的文件
int status; //定义存储函数返回值的变量
/* 打开一个MAT文件,如果不存在则创建一个MAT文件,如果打开失败,则返回 */
cout << "生成文件 : " << file << endl;
pmat = matOpen(file, "w");
if (pmat == NULL) {
cout << "不能创建文件 : " << file << endl;
cout << "(请确认是否有权限访问指定文件夹?)\n";
return(0);
}
/* 创建3个mxArray对象,其中pa1存储一个实数,pa2为3×3的双精度实型矩阵,*/
/* pa3存储字符串,如果创建失败则返回 */
pa1 = mxCreateDoubleScalar(1.234);
if (pa1 == NULL) {
cout << "不能创建变量。\n";
return(0);
}
pa2 = mxCreateDoubleMatrix(3, 3, mxREAL);
if (pa2 == NULL) {
cout << "不能创建矩阵。\n";
return(0);
}
memcpy((void *)(mxGetPr(pa2)), (void *)data, sizeof(data));
pa3 = mxCreateString("MAT文件示例");
if (pa3 == NULL) {
cout << "不能创建字符串。\n";
return(0);
}
/* 向MAT文件中写数据,失败则返回 */
status = matPutVariable(pmat, "LocalDouble", pa1);
if (status != 0) {
cout << "写入局部变量时发生错误。\n " ;
return(0);
}
status = matPutVariableAsGlobal(pmat, "GlobalDouble", pa2);
if (status != 0) {
cout << "写入全局变量时发生错误。\n";
return(0);
}
status = matPutVariable(pmat, "LocalString", pa3);
if (status != 0) {
cout << ": 写入String类型数据时发生错误。\n ";
return(0);
}
/* 清除矩阵 */
mxDestroyArray(pa1);
mxDestroyArray(pa2);
mxDestroyArray(pa3);
/* 关闭MAT文件 */
if (matClose(pmat) != 0) {
cout << "关闭文件时发生错误 " << endl;
return(0);
}
cout << "文件创建成功!\n";
return(1);
}

