在C中读取Matlab的.mat文件

4

我正在使用Matlab生成一个大矩阵,我想在C中使用它。

如何在C中读取Matlab的.mat文件?

如果可能,请回答如何做到?


请详细回答一下,我是C语言的新手。谢谢。 - Dhruba Raj Joshi
2
你是指 *.m 还是 *.mat 文件?这些是不同种类的怪物。 - dratewka
3
尝试在Matlab中以文本模式(save -asciidlmwrite等)编写矩阵,然后你可以在C中将其作为简单的文本文件读取。 - Shai
抱歉,肯定是 .mat 文件。 - Dhruba Raj Joshi
1
这些都有详细的文档记录。你可以从以下链接开始阅读:http://www.mathworks.co.uk/help/matlab/read-and-write-matlab-mat-files-in-c-c-and-fortran.html - High Performance Mark
显示剩余6条评论
3个回答

3
据说Matlab提供了自己的API来从C访问这些文件:读写MAT文件。我自己没有使用过,所以不知道这有多简单。
如果你真的想要访问二进制数据,搜索引擎会弹出这个PDF文件:matfile_format.pdf,其中描述了整个格式。这绝对不是一个简单的解决方案。
然而,在Python中可以很容易地读取这样的文件,请参见主题。用这种方式读取文件,再以易于在C中使用的格式编写文件似乎是一个好的解决方案。

如果想要在没有MATLAB API的情况下访问数据,可以看一下MATIO。这是一个开源的C库,支持文件版本4、5和7.1。 - Nils
在Python中读写这些文件是理解如何在C中访问文件所需的内容的好方法。这是一个很好的第一步。 - Jiminion

1

matOpen (C)

C 语法

#include "mat.h"
MATFile *matOpen(const char *filename, const char *mode);

文件名 要打开的文件名。

模式 文件打开模式。

这里有示例和解释。 这里是MAT文件API的所有链接。 我建议阅读和学习示例。


-2

如果仅需要文本...

#include <stdio.h>
#include <stdlib.h>

int main()
{

    FILE *pf;

    pf = fopen("something.m", "r");

    int buffer;

    while (buffer != EOF)
    {

        buffer = getc(pf);
        printf("%c", buffer);

    }



}

2
这段代码无法读取矩阵,只会在屏幕上输出垃圾字符。(请注意,实际上问题是关于.mat文件而不是.m文件) - interjay
一个解决方案可以是(1)让你的脚本生成一个可读的文本文件matrix.csv,(2)使用类似于这里提出的解决方案来读取文本文件。我知道问题是关于.mat文件的。然而,我认为其他解决方案和不同的观点对于同样的问题也是受欢迎的,或者至少应该被讨论。 - Leos313

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接