【问题标题】:How to call matlab self defined function with c++ code如何用c++代码调用matlab自定义函数
【发布时间】:2017-07-04 23:11:30
【问题描述】:

如果我在 matlab 文件 add.m 中定义 add(a,b) 函数,我如何从 c++ 代码中调用它? 一个简单的例子是这样的: 添加.m:

function y=add(a,b)
y=a+b;
end

c++代码:

int main(){
// call add(a,b) ?
}

实际上,我需要在我的 cpp 代码中使用更复杂的 matlab 函数,例如 cp2tform() 和 imtransform()。

【问题讨论】:

    标签: c++ matlab function interactive


    【解决方案1】:

    您可以从 matlab via this 生成 c 代码。并从您的主函数调用。

    【讨论】:

    • 谢谢,但我想转换cf2tform 不能被matlab coder 转换的函数。
    • 不知道那个方法是什么,网上也找不到。但我真的怀疑您是否可以从 c++ 调用任何 .m 文件。或者,我会在 OpenCV 中寻找类似的功能。例如,docs.opencv.org/2.4/modules/imgproc/doc/… 可能包含与imtransform 类似的函数。
    • 你真好,再次感谢。但是我需要在matlab中使用similarity transform,详细地,将一个具有5个点(src点)的图像转换为另一个模板图像(dst点),这种方法不是opencv中简单的仿射变换。另一个困惑是 estimateRigidTransform(opencv api) 不能接受 5 点变换,但有时不能产生 transform matrix (T_mat = 0)。
    【解决方案2】:

    您可以从 C/C++ 程序调用 MATLAB 引擎。参见例如external interfaces reference R2016b 或 online documentation on the MATLAB Engine。在 C/C++ 代码中使用 Matlab 引擎时,您只需在使用 engPutVariable 命令将 a 和 b 传递给 Matlab 后调用 engEvalString(MyEngine,"add(a,b)");。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-11
      • 2019-12-30
      • 2011-08-05
      • 2016-02-03
      • 1970-01-01
      • 2013-04-17
      • 2014-06-09
      • 1970-01-01
      相关资源
      最近更新 更多