如何在MATLAB中将变量保存为.dat并在C中读取.dat

时间:2016-01-10 08:47:13

标签: c matlab data-files

我有2个关于MATLAB和C的问题。

首先,我想知道如何在MATLAB中将变量保存为文件格式为.dat的数据文件。 变量由3维组成。

e.g。 M = ceil(10 * rand(10,20,30));

其次,在C中,让我知道如何读取保存在MATLAB中的M.dat。

当然我知道如何在C中分配3维动态数组。

假设声明了3维动态数组。

感谢。

2 个答案:

答案 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标题找到文件。