将Matlab变量传递给C

时间:2012-01-16 18:21:54

标签: c++ c matlab variables

我在一些Matlab代码中有一个非常大的数据结构,它是数组的单元格形式。我们想开发C代码来处理这些数据,但我需要一些方法来存储Matlab变量(我们在Matlab中生成)并在C / C ++程序中打开它。桥接这两个程序的最简单方法是什么,以便我可以传输数据?

3 个答案:

答案 0 :(得分:1)

如果您只是偶尔将数据从MATLAB移动到C,最简单的方法是将其写入二进制文件,然后从C中的文件中读取。这当然使C代码完全独立于MATLAB。

如果您的数据结构只是常规数组的单元格数组,则不必如此混乱,例如

a{1} = zeros(1,5);
a{2} = zeros(1,4);

您可以为每个单元格写一个标题,然后将数据写入文件。在上面的例子中,那将是:

[length{1} data{1} length{2} data{2}]

在上述情况中:

5 0 0 0 0 0 4 0 0 0 0

如果数组是2D,您可以通过编写:row,column,然后按行 - 主要顺序为每个单元格来扩展它。

这可能不太方便,但应该足够简单。您也可以将其保存为.mat文件并阅读,但我建议。在MATLAB中将它放在二进制格式中要容易得多。

如果你需要比文件更方便地移动数据,还有其他选择,但我能想到的只是以某种方式与MATLAB联系。

答案 1 :(得分:0)

答案 2 :(得分:0)

如果这两个进程在其生命周期中需要连接,那么您有很多选择:

  • 编译Matlab DLL。
  • 使用Matlab Engine。
  • 编译MEX文件(如前面提到的@Oli)

如果通信处于脱机状态(Matlab关闭后,C ++开始读取),那么您应该使用文件系统。尝试用XML格式化它,这是一个公认的标准。