问题标签 [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 投票
0 回答
119 浏览

c - 从 C 程序调用 MATLAB 函数

可能重复:
如何从 C 调用 MATLAB 代码?

有没有从 C 程序调用 MATLAB 函数的方法?
我的任务是使用 MATLAB 计算在 C 程序中生成的矩阵的伪逆。我想再次将从 MATLAB 获得的输出传递回 C 程序,在那里它会进行一些计算。

0 投票
1 回答
1663 浏览

c++ - 编译使用matlab引擎的c++程序eclipse

我正在尝试配置 eclipse 来编译和运行engdemo.cpp使用 matlab 引擎的示例。

我按照这里写的说明进行操作,但仍然有错误:

当我从 shell 编译程序时,我使用这些命令,并且没有错误,所以我可以运行它。

但是我需要在eclipse中编译。有什么帮助吗?

0 投票
1 回答
227 浏览

c - 我应该为 ruby​​ Fixnum -> matlab mwSize 使用 SWIG 类型映射吗?

我正在尝试更新一个使用 SWIG 构建从 ruby​​ 到 matlab 的接口的项目。matlab C-API 已更改,现在我在运行时收到以下错误。

`mxCreateDoubleMatrix_730':mwSize 类型的预期参数 0,但得到了 Fixnum 20 (TypeError)

我发现在 tmwtypes.h 中定义了 mwSize,它没有包含在 SWIG 接口文件中:

但是,如果我将 tmwtypes.h 添加到 SWIG 接口的 include 部分,我仍然会收到 TypeError,如果我将它添加到 include 和 parse 部分,我会收到以下编译错误:

错误:CPP #error ""此代码必须使用带符号整数值的 2 的补码表示形式编译""。使用 -cpperraswarn 选项继续 swig 处理。

放弃 tmwtypes.h,我的解决方案是将以下内容添加到 SWIG 接口文件中。

您可以在以下位置查看完整的 SWIG 接口文件: https ://github.com/morrifeldman/matlab-ruby/blob/master/ext/matlab_api/matlab_api.i

添加此类型映射后,程序编译并且似乎可以完美运行。

我有两个相关的问题想回答:

  1. 是我使用 mwSize 遇到的 TypeError 的正确解决方案。我应该尝试别的东西吗?

  2. 我认为包括 tmwtypes.h 会解决我的问题。为什么它不起作用?

作为参考,我将 OSX Mountain Lion 与 Xcode 4.5.2 一起使用。Makefile 正在调用 gcc-4.2。'gcc-4.2 --version' 给出 'i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1'

谢谢!

0 投票
2 回答
610 浏览

matlab - MATLAB 引擎:如果输入不完整,engEvalString() 将不会返回

我在 OS X 上使用MATLAB Engine C 接口。我注意到如果engEvalString()给出了不完整的 MATLAB 输入,例如

或者

那么这个函数就永远不会返回。最快的测试方法是使用engdemo.c示例,该示例将提示输入一段 MATLAB 代码并对其进行评估(即您可以键入任何内容)。

我的应用程序允许用户输入任意 MATLAB 输入并对其进行评估,因此我无法轻松防止输入不完整。有解决方法吗?有没有办法防止engEvalString()在这种情况下挂起,或者有没有办法在我实际将它传递给 MATLAB 之前检查任意一段代码的正确性/完整性?

0 投票
1 回答
2328 浏览

matlab - Matlab 引擎问题

我正在尝试在 Windows 7 上的 VS2010 中运行基本的 Matlab enginedemo.cpp,无论我做什么代码:

总是出错。

我的计算机上同时安装了 MatlabR2012b 和 MatlabR2012a,但我卸载了 MatlabR2012a,然后从我的路径变量中删除了对它的所有引用。

我正在运行 x64 MatlabR2012b 并设置了我的 VisualC++ Win 32 控制台应用程序。

我也已经将调试环境设置为:{MatlabRoot}\R2012b\extern\lib\win64\microsoft

C/C++->其他包含目录:{MatlabRoot}\R2012b\extern\include

链接器->常规- >附加库目录:{MatlabRoot}\R2012b\extern\lib\win64\microsoft

链接器->输入->附加依赖:libmx.lib;libmat.lib;libeng.lib

我的 Matlab 版本也已注册,因此不应该导致错误。

我搜索了有关此问题的其他一些 stackoverflow 问题,其中大多数似乎通过从路径变量中删除旧版本的 matlab 来解决他们的问题,但它对我没有用。

0 投票
1 回答
289 浏览

c - MATLAB C 矩阵接口:mxDestroyArray 是否递归地破坏单元格和结构的元素?

问题就在标题中:mxDestroyArray()递归地破坏单元格和结构的元素吗?是关于 MATLAB 的C 矩阵库接口

通过一个具体示例更详细地解释,假设我使用 创建一个 1×1 单元格mxCreateCellArray(),然后使用 创建一个数字矩阵mxCreateNumericArray()并将其设置为单元格的唯一元素。现在调用mxDestroyArray()单元格是否也会一次性破坏数字数组?还是我需要为数字数组单独调用它,然后是单元格?我希望是后者,因为这对于复杂的操作更合理。

文档在这一点上是模棱两可的。此外,设计一个可以给出明确答案的测试并不容易。

0 投票
1 回答
1922 浏览

matlab - 从 C 访问 MATLAB 的 unicode 字符串

如何通过 MATLAB 引擎或 MEX C 接口访问 MATLAB 字符串的底层 unicode 数据?

这是一个例子。让我们将 unicode 字符放入一个 UTF-8 编码的文件 test.txt 中,然后将其读取为

在 MATLAB 中。

现在,如果我先这样做feature('DefaultCharacterSet', 'UTF-8'),然后从 C 开始engEvalString(ep, "s"),然后作为输出,我会从文件中以 UTF-8 格式取回文本。这证明 MATLAB 在内部将其存储为 unicode。但是,如果我这样做mxArrayToString(engGetVariable(ep, "s")),我unicode2native(s, 'Latin-1')会在 MATLAB 中得到什么:所有非拉丁 1 字符都替换为字符代码 26。我需要以任何 unicode 格式(UTF-8)作为 C 字符串访问底层 unicode 数据、UTF-16 等),并保留非拉丁 1 字符。这可能吗?

我的平台是 OS X,MATLAB R2012b。

附录:文档明确指出“[mxArrayToString()] 支持多字节编码字符”,但它仍然只给了我原始数据的 Latin-1 近似值。

0 投票
1 回答
849 浏览

matlab - 获取 MATLAB 引擎以返回 unicode

0 投票
1 回答
572 浏览

matlab - 在不将 MATLAB 添加到 PATH 的情况下使用 MATLAB 引擎应用程序

我正在开发一个 MATLAB 引擎应用程序。为了使其工作,需要将 MATLAB 添加到 PATH 环境变量中,以便引擎应用程序可以找到某些 DLL(libeng 和 libmx)。

当 MATLAB 注册为 COM 服务器时,它会将其位置写入注册表,我可以访问它。使用此信息,是否有一种简单的方法可以让引擎应用程序工作而无需将 MATLAB 添加到 PATH?引擎应用程序理论上可以从注册表中读取这些 DLL 的位置,但问题是它甚至无法在没有这些 DLL 的情况下启动(根据 MA​​TLAB 引擎编译指令以标准方式编译时)。

我对winapi不是很熟悉,对COM一点也不熟悉。

是否有一个简单的解决方案可以让问题根据注册表中的信息找到它的 DLL?

0 投票
1 回答
748 浏览

c# - 通过 COM 实例化 MATLAB 引擎接口时出错(Matlab C# 集成)

我使用 COM 对象从 C# 调用 Matlab 函数。它运行但在多次调用时它会在通过 COM 实例化 matlab 引擎接口时给出异常。

//用于通过 COM 实例化 MATLAB 引擎接口

它给出的异常:

无法将“MLApp.MLAppClass”类型的 COM 对象转换为接口类型“MLApp.DIMLApp”。此操作失败,因为 IID 为“{669CEC93-6E22-11CF-A4D6-00A024583C19}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)。

我无法弄清楚这一点。任何帮助将不胜感激。