提问者:小点点

使用数据接口将C++数据存储到倍频程?


Matlab为C/C++提供了一个数据接口,请参阅此处。 这允许用户在运行时将数据从C/C++导出到Matlab格式(*.mat文件)。 这意味着您可以从一个C++程序中导出数据,然后使用Matlab返回到数据中进行分析。

我想开始使用一个开源的替代方案Octave来代替Matlab。 然而,我对octave提供的C/C++接口感到困惑。 到目前为止我所理解的是,我可以使用Octave的外部代码接口从Octave调用外部例程。

但是我是否也可以反过来,在运行时将我的C++程序中的数据存储到octave中呢? 如果是的话,请提供一个最小的例子。


共1个答案

匿名用户

这对你来说可能不是一个答案,但是把它写成评论太长太密集了,所以为了方便起见,我把它写成一个答案,另外希望在试图澄清事情的同时,它能给你一个答案。

基本上,你的问题有些混乱。 值得先弄清楚这几点。 如果我在这里的评论不能回答你的问题,也许你可以编辑你的问题,根据我下面的评论来明确你到底想要什么。

> MATLAB提供了两个接口,一个用于C,一个用于C++。 这些是完全独立的接口。

这些是通用接口,用于用C语言编写函数,然后从matlab调用该函数,反之亦然。 它们不是用来“导出数据”的。 通过提供的api调用matlab“save”函数,可以将C代码中的数据存储到。mat中,但我想不出有什么好的理由可以通过C而不是作为matlab脚本的一部分来这样做,该脚本调用C编写的函数来处理某些数据,然后从matlab调用“save”来保存结果。

Octave支持MATLAB的“C”接口(所谓的“。mex”文件)。 它不支持MATLAB的“C++”接口。 但它确实有自己的“C++”接口,即“。oct”文件。

如果您有一个执行您要求的。mex文件的示例,那么大概它也可以在octave中编译,只需要很少的修改(除了包含正确的库名以反映octave头)。

“I can call external routines from octave”<--您可以为一般C++代码分配一个函数名并转换它,以便您可以从octave调用它。 更重要的是,您可以从octave传递这个函数的输入,让它处理C++中的计算,然后返回一个结果给octave。 你这么说是这个意思吗? 如果是,那么是的,这是可能的,您链接的手册部分有如何做到这一点的示例(顺便说一下,请注意,您链接的是一个较旧的版本,手册的最新版本是octave.org/doc/v5.2.0)

Octave还提供了一个接口,用于直接从C++代码调用Octave函数(无论是在打算在Octave内使用的。oct文件的上下文中,还是在希望在内部使用Octave函数的独立C++可执行文件的上下文中)。

当您说“存储数据”时,在我看来,您基本上是在询问第5点,即将数据作为输入传递给C++编写的函数,让C++处理该数据,然后将其结果返回到octave工作区。 那是正确的吗? 或者,您实际上是在要求一种从C++中创建。mat文件的方法?

如果您所要求的只是前者,那么手册提供了许多例子。 例如。 如果您想尝试本页末尾的代码:https://octave.org/doc/v5.2.0/matrices-and-arrays-in-oct_002dfiles.html#matrices-and-arrays-in-oct_002dfiles.html#matrices-and-arrays-in-oct_002dfiles.html#matrices-and-arrays-in-oct_002dfiles,然后说代码保存在文件addtwomatrices.cpp中,那么您可以像这样编译(例如从您的linux终端):

$ mkoctfile -c addtwomatrices.cpp
$ mkoctfile ./addtwomatrices.o -o ./addtwomatrices

然后从八度开始这样称呼它:

> addtwomatrices( eye(2), magic(2) )
ans =
   5   3
   1   3

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(数据|接口|c++|数据|存储|倍频程)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?