问题标签 [matlab-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1152 浏览

c++ - MEX 文件中的断言导致 Matlab 崩溃

我在 mex 完美编译的 C++ 代码中使用了mxAssert由 matrix.h 定义的-macro。当我调用的 mex 代码中违反了一个断言时,这个断言不会导致我的程序崩溃,而是 Matlab 本身。我错过了什么吗?这是预期的行为吗?当我查看 Matlab 的崩溃报告时,导致断言与我的代码引发的断言完全相同 - 包括我的描述性描述......我是否必须以某种方式运行我的 mex 代码,以便 Matlab 可以识别 mex 代码导致的断言(类似尝试捕捉)?可能还有另一种方法可以安全地停止我的 mex 代码并返回到 Matlab 提示符。

提前感谢您,非常感谢您的帮助!

编辑:代码是用命令编译的mex -v Temp.cpp -g

编辑:一个让我的matlab屈服的最小例子:

0 投票
4 回答
13790 浏览

c++ - 包括 C++ 代码的 MATLAB“engine.h”在内的问题

我正在尝试从 MATLAB Doc 运行示例代码,但是当我尝试在 Visual Studio 中构建项目时出现此错误

事实是,在文档中我找不到在哪里找到链接它的标题,它们显示的示例好像不需要做任何其他事情,只需执行

关于如何解决这个问题的任何想法?

编辑

我解决了第一个问题,但现在我得到了一些与缺少库有关的错误:

我按照文档中的说明设置了 Path 变量,设置了 lib 路径并添加了一些库,现在我不知道还能做什么。我还重新启动了 VisualStudio,以使 Path 变量更改生效。

在此处输入图像描述 提前致谢。

0 投票
2 回答
2236 浏览

matlab - 使用 C++ 中的“engine.h”在 Matlab 中绘制四元数

我有一个使用卡尔曼滤波器的 C++ 算法。在代码中的某处预测四元数q'然后我用卡尔曼滤波器q更新四元数。

我想在 Matlab 中绘制两个图形,预测四元数和校正(更新)四元数的演变,所以我使用“engine.h”库在处理过程中向 Matlab 发送四元数信息(实际上我发送的是 4x1 矩阵) .

所以我的问题是:在 Matlab 中绘制四元数的最佳方法是什么,以便我可以直观地提取信息?单独绘制角度会更好吗?

0 投票
3 回答
6336 浏览

c++ - 将数据从 cv::Mat 转换为 mxArray

我想在 C++ 代码中使用“engine.h”向 Matlab 发送一个矩阵。事实是我在 cv::Mat 中有数据,我需要发送一个 mxArray。我尝试使用此表达式,但它不起作用:

有人知道进行转换的正确方法吗?任何帮助将不胜感激。谢谢。

编辑

我发现这种方式: https ://stackoverflow.com/a/8848711/744859

0 投票
1 回答
2900 浏览

c++ - 正确使用 C++ 中的 Matlab“engine.h”

我有一个代码可以在每次迭代中处理帧并生成一个矩阵。我的最终目标是将矩阵数据发送到 matlab,以便检查每一帧矩阵的演变。为了实现这一点,我在头文件 (helper.h) 中定义了一个静态变量 Engine。

在 main() 程序中,我只打开一次引擎:

在 matrix.cpp 里面是我想要发送到 Matlab 引擎的矩阵,所以我做了这样的事情:

我想以最有效的方式使用指向引擎的指针。我对如何正确使用matlab引擎有点困惑。

欢迎任何帮助,因为 matlab 文档和示例根本没有帮助,因为它们将所有代码都放在同一个文件中并且它们不使用迭代。提前致谢。

编辑

第一个关于引擎指针的问题已解决。解决方案是将其声明为 extern。

并在 main.cpp

0 投票
3 回答
1150 浏览

c++ - 每次迭代发送一个矩阵:Matlab "engine.h" c++

这个问题是在解决了我在这个问题中遇到的问题之后出现的。我有一个 c++ 代码,它处理来自相机的帧并为每个处理的帧生成一个矩阵。我想将每个矩阵发送到 matlab 引擎,所以在执行结束时我存储了所有矩阵。我对如何做到这一点感到困惑,我在每次迭代中发送一​​个矩阵,但它一直在覆盖它,所以最后我只有一个。这是一个代码示例:

矩阵.cpp

我还尝试使用计数器来动态命名不同的矩阵,但它不起作用,因为 matlab 引擎需要首先定义变量。任何帮助将不胜感激。谢谢。

0 投票
2 回答
484 浏览

c++ - Matlab 引擎命令窗口中的“???未定义的函数或方法”

我正在使用 Visual Studio 处理 C++ 代码,并将一些变量发送到 MATLAB 引擎。到目前为止没有问题。想象一下,我打开了 MATLAB 命令窗口和这些变量:

我可以使用标准的 MATLAB 函数,但我已经下载了一个新的 function.m(在设置路径后通常在 MATLAB 中工作),来自 MATLAB 引擎的这个命令窗口无法识别或找到。

我以为它们(命令窗口和 MATLAB)是同步的,但现在我发现它们不是。

我该如何解决这个问题,以便我可以从命令窗口使用我的 function.m?欢迎任何帮助。

0 投票
5 回答
2093 浏览

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

我有一个 C++ 文件:

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

这工作正常。我现在想将第二行更改为

  • 来电matlab_optimize(obj_fun)

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

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

2009 年的新闻组帖子似乎表明这是不可能的。然后,Matlab C++ 数学库工具箱似乎确实能够做到这一点

谷歌搜索也揭示了这个生成的片段

这似乎正是我想要的,但该文件来自 2000 年,而且我在任何地方的 matlab 文档中都找不到对这个函数的引用。那么如何使用这个呢?

0 投票
1 回答
505 浏览

c - 引擎函数:从 C 应用程序调用 MATLAB

我正在尝试从 C 应用程序调用用户定义的 MATLAB 函数,但即使是最简单的引擎场景也无法正常工作。下面是一个应该简单地打印a = 1到 MATLAB 命令窗口的程序。但是当我运行它时,什么也没有发生!

0 投票
1 回答
190 浏览

matlab - Matlab 的 Mex 文件的差异

我使用 Matlab Coder 从我的 matlab 项目中创建了一个 Mex 文件 (.mexw64)。问题是运行 mex 文件时的输出与以正常方式运行项目时的输出不同。通常数字的变化非常小:

5.4463.. -> 5.4465.. 等

我认为可能存在与定点计算相关的问题。我应该寻找什么?