c matlab 引擎调用,将C/C++回调传递给matlab引擎
我有一个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引擎相关推荐
- c语言调用dll实例 结构体传参,Matlab调用Dll,对于自定义结构体数组如何传参? - 程序语言 - 小木虫 - 学术 科研 互动社区...
%[例子1] % Matlab调用DLL,整形数组传参 v = [1,22,33;44,-56,67]; pv = libpointer('int16Ptr',v); m = get(pv,'Valu ...
- matlab 传字符串,在Simulink中将字符串传递给MATLAB函数
Simulink不支持字符串 . 喜欢,任何地方 . 它真的很糟糕,我不知道为什么存在这种限制 - 对我来说这似乎是一个非常糟糕的设计选择 . 我找到了以下解决方法: 脏铸造 让 function y ...
- matlab下调用python,numpy库函数的方法
matlab下调用python,numpy库函数的方法 Matlab 调用 Python 下的脚本 这篇博文的目的是为了解决博主在用matlab的eig函数时遇到的一个问题: 博主在用matlab下的 ...
- matlab 调用mex,从MATLAB中调用MEX中的C类方法
AFAIK,没有简单的方法可以做到这一点,因为mexFunction接口相当扁平.但是,我可以想到一些不同的解决方法,可以让你接近.根据您的需求选择最佳的一个. >最简单的方法是在mex函数中创 ...
- 在matlab如何调用库函数,Matlab调用外部库函数方法和注意事项
在MATLAB环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中.一旦加载成功,就 能直接在MATLAB中直接请求关于函数的任何信息.而当不再需要该库时,就应当及时把库文件从内存 中卸载以 ...
- c matlab 引擎调用,【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)
先贴本人调试通过的代码: #pragma comment(lib, "libmx.lib") //#pragma comment(lib, "libmat.lib&quo ...
- VS2013和MATLAB相互调用混合编程
Visual Studio和MATLAB混合编程,有两种方法: 1 MATLAB调用C程序: 2 VS调用MATLAB(目前见到的都是VS,其他编译器如codeblocks,或不提供这项功能): MA ...
- 【环境】VS2013和MATLAB相互调用混合编程
Visual Studio和MATLAB混合编程,有两种方法: 1 MATLAB调用C程序: 2 VS调用MATLAB(目前见到的都是VS,其他编译器如codeblocks,或不提供这项功能): 前一 ...
- matlab实时摄像头处理,在MATLAB中调用摄像头实时地显示图像
<在MATLAB中调用摄像头实时地显示图像>由会员分享,可在线阅读,更多相关<在MATLAB中调用摄像头实时地显示图像(1页珍藏版)>请在人人文库网上搜索. 1.clc;clf ...
最新文章
- Symbian开发系列 - 入门篇
- Windows7 UAC
- 利用webBrowser获取页面iframe中的内容
- 多图文帖智能封面提取方案
- 计算机专业英语公开课教案,小学英语公开课教案,小学英语优质课教案?
- Python学习之==文件操作
- MSYS2 + MinGW-w64 + Git + gVim 环境配置
- mysql 5.6 gtid 复制_mysql 5.6 gtid复制
- 数据产品-数据分析和可视化工具Excel基础使用
- 刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)
- 钢结构节点输出软件_BIM技术助力桥梁钢结构设计施工一体化建设
- Abaqus帮助文档翻译——启动和退出Abaqus/CAE
- 宏的本质以及宏(包括函数式宏) 没有返回值概念
- 机械革命 Code Go 评测
- 转载:基于MATLAB的几种图像分割算法
- 计算机excel隆华书店销量,计算机二级excel主要函式的用法
- HA高可用集群与RHCS集群套件
- 最受程序员欢迎的图书推荐
- 美食家(2)- 家常红烧肉制作方法
- bean的加载-配置文件的解析
热门文章
- 视频编解码(五):解码器驱动代码理解
- linux-清除登录系统成功记录的命令
- jetson windows_生命不息,折腾不止:Jetson Nano填坑之软件篇
- ssh 免密登录 ssh互信 ssh登录到linux服务器不需要输入密码
- windows源码安装apache2 win安装apache 阿帕奇服务器
- Android 实现计时器功能,Android实现倒计时30分钟功能
- jdbc如何使用oracle数据库连接池,使用JDBC连接池技术连接Oracle数据库
- 对称二叉树c++_二叉树:我对称么?
- 微软云架构服务器,微软云存储架构(Azure Cloud Storage)
- pcie数据反_PCIe事务层の详解(一)