matlab中的C C++和C++中的matlab

Tim*_*Tim 10 c matlab mex matlab-engine matlab-compiler

似乎有几种方法可以在C C++中调用matlab并在matlab中调用C C++.当我尝试在这里列出它们时,请指出它如果我错过了什么.

要在matlab中调用C C++,还有两种方法.第一个是调用C共享库中的函数.第二个是将C C++代码构建为二进制MEX文件,这些文件将从MATLAB命令行调用.对于第一种方法,C共享库是否只是通用的,即没有改变他们的matlab的C代码,并从像gcc这样的通用C编译器编译?

要在C C++中调用matlab代码,有两种方法可用.第一个是Matlab引擎.第二个是使用MATLAB Compiler mcc从MATLAB代码创建C或C++共享库.

除了matlab和C++之外,C++还可以通过写入和从某些文件(例如mat文件,文本文件)读取数据来进行通信.

有多种方法可以实现这里的每个目标,你能告诉我哪些案例最适合使用哪些目标?即调用C共享库中的函数VS将C++代码构建成二进制MEX文件,Matlab引擎VS将Matlab代码编译成C C++共享库.

感谢致敬!

Jas*_*n B 8

我只能从MATLAB中调用C或C++函数.在我看来,在共享库中调用函数和从MEX文件调用函数之间的唯一区别是,使用共享库,您必须使用'calllib'调用该函数,这是一个命令行类型函数,MEX函数允许你可以像调用内置函数一样调用函数,这样界面就更清晰了.

我的建议是使用MEX文件

  • 您正在使用C++(您可能必须编写包装器以在共享库中使用C++)
  • 您正在使用MATLAB作为大量优化的C或C++例程的粘合剂.你希望能够干净地打电话给他们.

如果使用共享库

  • 您已经拥有一个可以不加修改地使用的现有C库.
  • 您只需要少量调用C函数.

真的,它归结为界面.我个人更喜欢MEX文件路由,因为它提供了从MATLAB到C或C++函数的最干净的接口.您可以像使用标准MATLAB类型的另一个函数一样调用它.使用共享库,您可能必须在调用库函数之前进行一些数据格式化