将 C/C++ 回调传递到 matlab 引擎

2024-02-27

我有一个 C++ 文件:

  • 启动 matlab 引擎
  • calls matlab_optimize()(一个编译后的 m 文件,在内部运行 matlab 优化器之一)
  • 打印结果
  • 停止发动机并退出

这很好用。我现在想将第二行更改为

  • calls matlab_optimize(obj_fun)

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

我不能只是编译obj_fun()作为一个独立的 mex 文件,因为我希望它与启动 matlab 引擎(驱动整个过程)的 c++ 进程进行通信。

2009 年的新闻组帖子 http://www.mathworks.com/matlabcentral/newsreader/view_thread/252735似乎表明这是不可能的。然后再次使用 Matlab C++ 数学库工具箱.

也在谷歌上搜索显示这个生成的片段 http://www.princeton.edu/~rvdb/matlab/mex.h:

/*
 * Register a function pointer as a MATLAB-callable function.
 */
extern void mexRegisterFunction(void);

这似乎正是我想要的,但该文件是 2000 年的,我在 matlab 文档中没有找到任何对此函数的引用。那么如何使用这个呢?


您可以使用mclCreateSimpleFunctionHandlemclmcrrt.h 标头中的函数可实现此功能。

它用原型转换函数void(*)(int,mxArray*,int,mxArray)到 mxArray 结构。

您可以将其传递给 MATLAB 侧函数并像一般 MATLAB 函数一样调用它,而无需使用 mex 文件进行任何操作。

在 C/C++ 方面:

void callback(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])
{
   <some manipulations with data>;
}

...
//calling the matlab function
matlab_function(mclCreateSimpleFunctionHandle(callback));

在 MATLAB 端:

function [] = matlab_function(function)
    function(<any variable>)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C/C++ 回调传递到 matlab 引擎 的相关文章

  • WP8.1 C# 绑定联系人图像

    信息很简单 我正在尝试创建一个可以显示用户联系人的应用程序 我也是一名自学成才的程序员 所以我在某些方面有编程经验 但总体来说我对数据绑定相对较新 首先 我有一个 ListView 控件 其中包含图像绑定
  • 如何启动异步任务对象

    我想开始收集Task同时处理对象并等待所有对象完成 下面的代码显示了我想要的行为 public class Program class TaskTest private Task createPauseTask int ms works w
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 命名空间“Microsoft”中不存在类型或命名空间名称“Practices”

    我正在使用 Microsoft Visual Studio 2005 for c 我的代码中有以下命名空间 using Microsoft Practices EnterpriseLibrary using Microsoft Practi
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 带有自定义鉴别器的 EntityFramework Code First 继承

    我正在尝试在 EntityFramework Code First 中映射以下继承 public class Member public string ProjectName get set public string AssemblyNa
  • 该组件没有由 uri 标识的资源

    我想创建一个通用数据网格以在我的所有视图 用户控件上使用 这是我的结构 Class Library called Core Class called ViewBase public class ViewBase UserControl pu
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • 为什么我不能对普通变量进行多态?

    我是一名Java程序员 最近开始学习C 我对某事感到困惑 据我了解 在 C 中 要实现多态行为 您必须使用指针或引用 例如 考虑一个类Shape与实施的方法getArea 它有几个子类 每个子类都以不同的方式重写 getArea 然后考虑以
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件
  • 修改代码以从 Windows 中的 PE 可执行文件检索双重签名信息?

    我已经挣扎了一段时间想要修改这段代码示例 https support microsoft com en us help 323809 how to get information from authenticode signed execu
  • 未找到 _sqlite3_open 等符号错误

    您好 我收到此错误 Undefined symbols sqlite3 open referenced from main in ccRlWVer o sqliite3 close referenced from main in ccRlW
  • 如何在给定点停止线程?

    我试图停止一些线程 阅读一些有关优雅地执行此操作的正确方法的内容 但我一定做错了什么 因为它根本不起作用 起初我尝试不使用lock with IsRunning不稳定 然后尝试使用锁 这是我所拥有的 private volatile boo
  • 获取会议组织者邮件地址 EWS API

    我想使用 EWS API 获取会议组织者的邮件地址 目前 我刚刚获得约会项目的一些属性 我听说你可以设置你想要获取哪些属性 我的代码看起来像这样 CalendarView cview new CalendarView start end c
  • 扔掉挥发物安全吗?

    大多数时候 我都是这样做的 class a public a i 100 OK delete int j Compiler happy But is it safe The following code will lead compilat
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所

随机推荐

  • ASP.NET MVC 3 Razor 性能

    重要更新 请参阅底部的更新 5 asp net mvc 3 中没有性能问题 这是基准问题 我在 asp net mvc2 3 aspx 和 3 razor 中制作了一个简单的 hello world 项目并对它们进行了基准测试 我看到的是
  • 如何在 Windows 上安装 OpenJPEG 并将其与 Pillow 一起使用?

    我想使用Python Pillow库将16位灰度数组保存在jp2 JPEG 2000 格式 我在尝试在 Windows 计算机上安装所需的 OpenJPEG 库时遇到了困难 这文档 https github com uclouvain op
  • 调用非托管函数,该函数采用指向指针参数的指针

    我正在尝试从我的 Net Core 应用程序调用 C 中的函数 深入了解一下 C 函数来自libmpv 渲染 h https github com mpv player mpv blob master libmpv render h函数的头
  • 如何为给定的 JavaScript 生成调用图? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我见过 https stackoverflow com questions 1385335 how to generate funct
  • 显示名称而不是电子邮件的电子邮件标题的格式是什么?

    我正在尝试创建一个 php 脚本 该脚本将使用 mySQL 数据库为我处理邮件列表 并且我已经准备好了大部分内容 不幸的是 我似乎无法让标题正常工作 而且我不确定问题是什么 headers From email protected cdn
  • Julia 中的 ifelse 和三元运算符有什么区别?

    假设我有这样的代码 cond true a cond 1 2 b ifelse cond 1 2 两种操作有什么区别 在你写的例子中 没有任何有效的区别 但是 如果这两个分支比简单的整数字面更复杂 则存在差异 julia gt f prin
  • 适用于 Android 的 OpenGL ES 工具

    在哪里可以找到用于在 OpenGL ES 中设计复杂对象的所有工具 像正方形 立方体 球体等 只需对对象进行建模并将其导出为 OBJ 文件 然后即可将 OBJ 文件加载到场景中 这是我编写的用于加载 OBJ 文件的代码 我将它们从 Maya
  • 无法删除 Kubernetes 中的所有 Pod - 清除/重启 Kubernetes

    我正在尝试删除 删除我的环境中运行的所有 Pod 当我发出 码头工人 我得到以下输出 这是一个示例屏幕截图 可以看到 都是K8 我想删除所有 Pod 删除它们 我尝试了以下所有方法 但它们不断出现 sudo kubectl delete a
  • std::async 是如何实现的?

    我想知道使用它有多合适std async在面向性能的代码中 具体来说 从工作线程捕获异常到主线程是否有任何惩罚 如何从worker返回到main的值 ref 传递的输入参数实际上永远不会被复制吗 我计划将一个繁重的会话对象传递给线程或写入s
  • kafka 和 kafka-client 有什么区别?

    我发现maven仓库里有几个kafka apache的maven仓库中有两个kafka https mvnrepository com artifact org apache kafka kafka https mvnrepository
  • 在Android中安排重复任务

    我正在设计一个应用程序 只要该应用程序位于前台 该应用程序就会重复执行将状态发送到专用服务器的任务 在我在网络上的搜索中 我看到了几种不同的方法 并想知道最好的方法是什么 安排服务器调用的最佳方式是什么 我看到的选项是 Timer http
  • GitHub 中未经验证的提交

    在我的 GitHub 存储库中 我有一个分支 其中有一些未经验证的提交 有什么办法可以将它们更改为已验证吗 未经验证意味着您的签名是错误的 如果您提交时使用了错误的电子邮件 密码 如果您尚未在 GitHub 上 在该帐户上 上传签名 或者上
  • Spring Boot:Jdbc javax.net.ssl.SSLException:在接收对等方的 close_notify 之前关闭入站

    我目前正在学习有关在 Spring Boot Web 应用程序中实现 JDBC 和使用数据库的更多信息 并且我遇到了在帖子底部编写的以下堆栈跟踪 我创建了一个简单的 Employee 模型 并且尝试在 main 所在的同一个类上执行一些数据
  • Lambda/Linq 包含多个关键字的条件

    我必须列出 带有评论字段的主列表 要搜索的关键字列表 我想搜索每条记录的每个注释字段中的关键字 在 SQL 中如下所示 select from MainList where Comment like keyword1 or Comment
  • 在Slave redis db上写入

    我有一个主 Redis 服务器 S1 还有 6 个其他服务器 我希望他们有本地redis从属服务器 因此redis主服务器上的任何更改都将复制到每个本地服务器上的从属服务器 我可以在一个从站上写入并让该从站更新主站 然后主站将更新其他从站吗
  • 从另一个浏览器打开一个浏览器[重复]

    这个问题在这里已经有答案了 我正在 Firefox 上运行我的 Web 应用程序 我在其中一个页面上有超链接 当我单击它时 它会打开另一个应用程序作为新的弹出窗口 但 Firefox 不支持该应用程序 所以我想在 Internet Expl
  • 将 Android CheckBox 设置为不同的图像...然后返回原始图像

    我正在使用以下 非常常见 代码来更改 Android 应用程序中的复选框图像 mCheck CheckBox findViewById R id chkMine mCheck setButtonDrawable R drawable my
  • 如何通过属性名称和/或值查找锚标记? [复制]

    这个问题在这里已经有答案了 这是我正在尝试自动化的网络 https www supremenewyork com shop sweatshirts xi9sboa21 u2te1fdw8 https www supremenewyork c
  • 为 Databricks 生成数据库架构图

    我正在创建一个 Databricks 应用程序 并且数据库架构变得非常重要 有没有办法为 Databricks 数据库生成架构图 类似于可以从 mysql 生成的架构图 有两种可能的变体 使用 Spark SQL 与show databas
  • 将 C/C++ 回调传递到 matlab 引擎

    我有一个 C 文件 启动 matlab 引擎 calls matlab optimize 一个编译后的 m 文件 在内部运行 matlab 优化器之一 打印结果 停止发动机并退出 这很好用 我现在想将第二行更改为 calls matlab