我有2个关于MATLAB和C的问题。
首先,我想知道如何在MATLAB中将变量保存为文件格式为.dat的数据文件。 变量由3维组成。
e.g。 M = ceil(10 * rand(10,20,30));
其次,在C中,让我知道如何读取保存在MATLAB中的M.dat。
当然我知道如何在C中分配3维动态数组。
假设声明了3维动态数组。
感谢。
答案 0 :(得分:0)
以下是用C读取文件的代码。
#include <stdio.h>
int main(){
FILE *fp;
fp = fopen("test.dat", "r");
int numOfRows = 3; //whatever number you need
int numOfCol = 3; //whatever number you need
int matrix[numOfRows][numOfCol]; //buffer to keep parsed data
for (int i = 0; i < numOfRows; i++){
for (int j = 0; j < numOfCol; j++){
int buff;
fscanf(fp, "%d", &buff);
matrix[i][j] = buff;
printf("%d", matrix[i][j]);
}
}
fclose(fp);
return 0;
}
在这里,我有意避免使用3D阵列,并展示了如何处理2D。如果是3D,只需将它添加到其他2个维度前面的矩阵数组中,因为它们存储在内存中。
另外,我的例子是关于类型的2D数组:
1 2 3
4 5 6
7 8 9
我不知道从matlab导出后你将如何获得你的.dat文件。但解析的想法必须类似。
祝你好运。 _p00fl8。
答案 1 :(得分:0)
我认为你不能轻易做到这一点。据我所知.dat文件不是标准格式。通常,此格式用于程序特有的数据,通常是二进制文件。
参考:http://www.mathworks.com/matlabcentral/answers/24852-save-signal-as-dat-file
您可以使用save将文件另存为.mat文件(这是Matlab的.dat文件),但是您需要找到一个库来读取C.中的.mat文件。 / p>
来自 kostek 的评论中提供的链接http://se.mathworks.com/help/matlab/matlab_external/reading-a-mat-file-in-cc.html可能可用于读取.mat文件,以防您使用mat.h
标题找到文件。