【问题标题】:read .mat file in C在 C 中读取 .mat 文件
【发布时间】:2018-07-04 23:17:15
【问题描述】:

您好,我正在将 matlab 代码转换为 C。在此过程中,我需要读取一些 .mat 文件。读取 .mat 文件字段,将它们保存到数组中然后处理它。 我看过一些例子here

这里他们使用了matlab提供的api。有没有什么方法可以在没有任何 api 的简单 C 中做到这一点?

更新: 我只是根据简单代码的建议尝试了api:

#include "mat.h"
void matread_Cell(const char *file, const char *FieldName, int CellIndex)
{
    printf("\n From matread_cell Reading matfile %s...\n\n", file);
    MATFile* pmat = matOpen(file, "r");

    if (pmat == NULL) {
      printf("Error opening file %s\n", file);
      return;
    }
}

很遗憾,它无法识别 MATFile 或 matOpen。错误说

对“matOpen”的未定义引用 块引用

我从 extern/include/mat.h 目录中复制了 mat.h,包括 matrix.h 和 tmwtypes.h。

【问题讨论】:

  • 你不能只复制.h文件,这不是它的工作原理
  • @AnderBiguri 你能告诉我如何使用这个api吗?
  • 你链接图书馆了吗?仅仅包括标题是不够的。
  • @Asparagus 这不是你有问题的 API,它的基本 C

标签: c matlab


【解决方案1】:

Matlab documents 他们的文件格式。如果您有很多时间,您可以根据规范重写自己的解析器。

但是,我会说 API 是简单的 C,而没有 API 的方式是复杂的。

【讨论】:

  • 如果你从python库读取matlab获取源码,你可以直接得到代码。
  • @dsolimano,我尝试使用 api 但现在似乎无法识别功能。
  • @Asparagus 我认为,也许,您需要查看如何在 C 中使用库。您需要包含头文件,并可能将 Matlab 头目录传递给您的编译器,并链接 matlab库到你的二进制文件中。
  • @dsolimano 你的意思大概是这样的:"#include "/usr/local/MATLAB/R2011b/extern/include/mat.h" ?
  • @Asparagus 不确定您的 IDE,但 stackoverflow.com/questions/6016815/… 是 GCC 正确方向的指针。您需要做两件事,1,包含头文件,2,在库中链接。看起来你少了 2 个。
猜你喜欢
  • 1970-01-01
  • 2016-05-18
  • 2020-11-03
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
相关资源
最近更新 更多