我有一个C文件:

>启动matlab引擎

>调用matlab_optimize()(一个编译的m文件,在内部运行一个matlab优化器)

>打印结果

>停止发动机并退出

这很好用.我现在想把第二行改成

>调用matlab_optimize(obj_fun)

其中obj_fun()是我的C代码中定义的函数,它本身将回调到其他代码中.基本上我希望matlab_optimize内部使用的matlab优化器使用我提供的函数指针作为目标函数.

我不能将obj_fun()编译为一个独立的mex文件,因为我希望它与启动matlab引擎的c进程通信(驱动整个事情).

/*

* Register a function pointer as a MATLAB-callable function.

*/

extern void mexRegisterFunction(void);

这似乎正是我想要的,但文件来自2000,我发现在任何地方的matlab文档中都没有引用此函数.那怎么用呢?

解决方法:

您可以使用mclmcrrt.h标头中的mclCreateSimpleFunctionHandle函数来创建此功能.

它将带有原型void(*)(int,mxArray *,int,mxArray)的函数转换为mxArray结构.

您可以将其传递给MATLAB端函数,并将其称为通用MATLAB函数,而无需对mex文件进行任何操作.

在C/C++方面:

void callback(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])

{

;

}

...

//calling the matlab function

matlab_function(mclCreateSimpleFunctionHandle(callback));

在MATLAB方面:

function [] = matlab_function(function)

function()

end

标签:matlab-deployment,mex,c,matlab,matlab-engine

来源: https://codeday.me/bug/20190723/1513942.html

c matlab 引擎调用,将C/C++回调传递给matlab引擎相关推荐

  1. c语言调用dll实例 结构体传参,Matlab调用Dll,对于自定义结构体数组如何传参? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    %[例子1] % Matlab调用DLL,整形数组传参 v = [1,22,33;44,-56,67]; pv = libpointer('int16Ptr',v); m = get(pv,'Valu ...

  2. matlab 传字符串,在Simulink中将字符串传递给MATLAB函数

    Simulink不支持字符串 . 喜欢,任何地方 . 它真的很糟糕,我不知道为什么存在这种限制 - 对我来说这似乎是一个非常糟糕的设计选择 . 我找到了以下解决方法: 脏铸造 让 function y ...

  3. matlab下调用python,numpy库函数的方法

    matlab下调用python,numpy库函数的方法 Matlab 调用 Python 下的脚本 这篇博文的目的是为了解决博主在用matlab的eig函数时遇到的一个问题: 博主在用matlab下的 ...

  4. matlab 调用mex,从MATLAB中调用MEX中的C类方法

    AFAIK,没有简单的方法可以做到这一点,因为mexFunction接口相当扁平.但是,我可以想到一些不同的解决方法,可以让你接近.根据您的需求选择最佳的一个. >最简单的方法是在mex函数中创 ...

  5. 在matlab如何调用库函数,Matlab调用外部库函数方法和注意事项

    在MATLAB环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中.一旦加载成功,就 能直接在MATLAB中直接请求关于函数的任何信息.而当不再需要该库时,就应当及时把库文件从内存 中卸载以 ...

  6. c matlab 引擎调用,【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)

    先贴本人调试通过的代码: #pragma comment(lib, "libmx.lib") //#pragma comment(lib, "libmat.lib&quo ...

  7. VS2013和MATLAB相互调用混合编程

    Visual Studio和MATLAB混合编程,有两种方法: 1 MATLAB调用C程序: 2 VS调用MATLAB(目前见到的都是VS,其他编译器如codeblocks,或不提供这项功能): MA ...

  8. 【环境】VS2013和MATLAB相互调用混合编程

    Visual Studio和MATLAB混合编程,有两种方法: 1 MATLAB调用C程序: 2 VS调用MATLAB(目前见到的都是VS,其他编译器如codeblocks,或不提供这项功能): 前一 ...

  9. matlab实时摄像头处理,在MATLAB中调用摄像头实时地显示图像

    <在MATLAB中调用摄像头实时地显示图像>由会员分享,可在线阅读,更多相关<在MATLAB中调用摄像头实时地显示图像(1页珍藏版)>请在人人文库网上搜索. 1.clc;clf ...

最新文章

  1. Symbian开发系列 - 入门篇
  2. Windows7 UAC
  3. 利用webBrowser获取页面iframe中的内容
  4. 多图文帖智能封面提取方案
  5. 计算机专业英语公开课教案,小学英语公开课教案,小学英语优质课教案?
  6. Python学习之==文件操作
  7. MSYS2 + MinGW-w64 + Git + gVim 环境配置
  8. mysql 5.6 gtid 复制_mysql 5.6 gtid复制
  9. 数据产品-数据分析和可视化工具Excel基础使用
  10. 刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)
  11. 钢结构节点输出软件_BIM技术助力桥梁钢结构设计施工一体化建设
  12. Abaqus帮助文档翻译——启动和退出Abaqus/CAE
  13. 宏的本质以及宏(包括函数式宏) 没有返回值概念
  14. 机械革命 Code Go 评测
  15. 转载:基于MATLAB的几种图像分割算法
  16. 计算机excel隆华书店销量,计算机二级excel主要函式的用法
  17. HA高可用集群与RHCS集群套件
  18. 最受程序员欢迎的图书推荐
  19. 美食家(2)- 家常红烧肉制作方法
  20. bean的加载-配置文件的解析

热门文章

  1. 视频编解码(五):解码器驱动代码理解
  2. linux-清除登录系统成功记录的命令
  3. jetson windows_生命不息,折腾不止:Jetson Nano填坑之软件篇
  4. ssh 免密登录 ssh互信 ssh登录到linux服务器不需要输入密码
  5. windows源码安装apache2 win安装apache 阿帕奇服务器
  6. Android 实现计时器功能,Android实现倒计时30分钟功能
  7. jdbc如何使用oracle数据库连接池,使用JDBC连接池技术连接Oracle数据库
  8. 对称二叉树c++_二叉树:我对称么?
  9. 微软云架构服务器,微软云存储架构(Azure Cloud Storage)
  10. pcie数据反_PCIe事务层の详解(一)