VS中使用C语言读取Matlab的Mat格式数据
1、加载matlab的extern的include和lib
项目-> 属性进入如下界面加载matlab对应的库
2、加载成功后运行代码
#include "mat.h"
int main() {
MATFile *matFile;
mxArray *matArray;
double *data; // 指向数据的指针
int rows, cols; // 数据的行数和列数
// 打开MAT文件
matFile = matOpen("dataResidualVar.mat", "r");
if (matFile == NULL) {
printf("Error opening MAT file\n");
return 1;
}
// 读取变量(假设变量名为"your_variable", 选择 matlab 打开时的变量名称)
matArray = matGetVariable(matFile, "dataAwakeNew");
if (matArray == NULL) {
printf("Error reading variable\n");
return 1;
}
// 获取数据的指针和维度信息
data = mxGetPr(matArray); // 获取指向数据的指针
rows = mxGetM(matArray); // 获取数据的行数
cols = mxGetN(matArray); // 获取数据的列数
// 输出数据
printf("Data in matArray:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%lf ", data[i + rows * j]); // 以列优先的方式输出数据
}
printf("\n");
}
// 关闭MAT文件
matClose(matFile);
return 0;
}
3、运行结果
4、静态库链接(不知是否真的需要)
链接:https://pan.baidu.com/s/1QaQ2ah58972Z9M47zh-jSQ
提取码:cmat
5、参考博文(有效)
参考博文
注意编译平台的设置。
可能会有如下错误:
VS 报错error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead.
报错的解决方案