问题标签 [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.
c - 链接头文件:Matlab 引擎和 OpenGL
我正在尝试制作一个通过Matlab Engine与 Matlab 接口的 C 程序,它还通过Glut使用 OpenGL 。我已经成功编译并运行了执行这些操作之一的 C 程序(Matlab 引擎或 Glut),但是我在编译同时使用这两者的程序时遇到了问题。
特别是,我在 gcc 中使用了以下命令:gcc -o test test.c -I/Applications/MATLAB_R2014a.app/extern/include/ -framework GLUT -framework OpenGL
. -I 标志是告诉链接到 engine.h 和 matrix.h 头文件所在的目录。编译器抱怨 Matlab 引擎和矩阵库函数是未定义的符号:
这是我要编译的 test.c 文件。我现在不需要它来做任何特别的事情。首先,我只是想看看我是否可以让 C 程序同时使用 Matlab 引擎和 OpenGL。
c - 指向 Matlab 变量的 C 指针
我正在开发一个需要重复访问大型 Matlab 数据结构的 C 程序。这是一个使用 OpenGL 的图形密集型程序,因此它必须很快。
使用 Matlab 引擎重复访问此数据结构似乎需要很长时间(每次调用 engGetVariable 和 engPutVariable 大约需要 10-20 毫秒)。我认为这是因为这些函数会复制内存中的数据。
因此,现在我尝试获取指向数据结构的指针,而不是在数据结构本身上使用 engGetVariable。如果我在指针上调用 engGetVariable,我可以通过取消引用指针来访问 C 中的数据结构,而不必先复制内存中的数据。但是,到目前为止,我还无法让它发挥作用。这样的事情可能吗?
c++ - Matlab 引擎 2014a 无法在 Windows 7 64 位下启动 - 缺少 2013a dll
我无法使用 matlab 2014a、Win7 64bit、64bit 从使用 VS2012 或 VS2013、英特尔编译器的 c++ 程序构建的启动 Matlab 引擎。我可以使用 Matlab 2013a 很好地启动引擎。如果我链接到 2014a,程序会抱怨 libmwmfl_scalar.dll 丢失并且无法启动。这是一个包含在 2013 中的 dll,但似乎不再包含在 2014a 中(无论是在程序中还是在编译器运行时分发中)。如果我链接到 2013a,它运行没有问题。为什么当我更新到 2014a 时它会坚持使用旧的 DLL?我已将所有包含、库、环境更改为 2014a,并在清理后重建。我的属性中没有明确引用 libmwmfl_scalar.dll 并将所有文件夹更改为 2014a。我没有链接到任何其他使用 Matlab 的东西。这个 dll 没有
这些设置与另一篇文章(在 Visual Studio 中直接调用 MATLAB(多线程))中的此属性表中一样,它提供了一些相关的上下文。
Ben - 不,我没有使用 Mex 文件。这是调用 Matlab 的代码
这是我的路径,同时存在 2013a 和 2014a。我也试过删除 2013a,重新启动 VS,重建,但它仍然在寻找旧的 DLL。
C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program文件 (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;C:\Program Files (x86) \Intel\icsxe\2013.1.046\bin;C:\Program Files\MATLAB\R2014a\bin;C:\Program Files\MATLAB\R2014a\bin\win64;C:\Users\Rodney\Anaconda\Lib\site- packages\PyQt4;C:\Program Files (x86)\Intel\Trace Analyzer and Collector\8.1.4.045\bin;C:\Program Files (x86)\Intel\MPI\4.1.3.045\em64t\bin;C:\ Program Files (x86)\Intel\MPI\4.1.3.045\ia32\bin;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\mpirt;C:\Program Files (x86)\ Common Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;C:\PROGRA~2 \Intel\MPI\411~1.036\em64t\bin;C:\PROGRA~2\Intel\COMPOS~1\bin\intel64;C:\PROGRA~2\Intel\COMPOS~1\redist\intel64\compiler;C :\PROGRA~2\MICROS;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files ( x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Common Files\Seagate\SnapAPI\;C:\Program Files\MATLAB\R2014a\runtime\win64; C:\Program Files\MATLAB\R2014a\polyspace\bin;\win64;C:\Program Files\MATLAB\MATLAB Compiler Runtime\v83\runtime\win64;C:\Program Files\MATLAB\R2013a\runtime\win64;C :\Program Files\MATLAB\R2013a\bin;C:\Program Files\MATLAB\R2013a\bin\win64;C:\Users\Rodney\Anaconda;C:\Users\Rodney\Anaconda\Scripts;C:\PROGRA~2\Gambit-C\v4.7.2\bin;C:\Users\Rodney\AppData\Roaming\cabal\bin; C:\Program Files (x86)\Intel\Trace Analyzer and Collector\8.1.4.045\dll\impi64;C:\Program Files (x86)\Intel\Trace Analyzer and Collector\8.1.3.037\dll\impi64;C: \Program Files\smartmontools\bin;C:\ghc-7.6.3\bin;C:\Program Files (x86)\WinAnt\bin;c:\windows\system32;C:\Users\Rodney\AppData\Roaming\ cabal\bin\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\\Program Files (x86)\WinAnt\bin;c:\windows\system32;C:\Users\Rodney\AppData\Roaming\cabal\bin\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\; C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\\Program Files (x86)\WinAnt\bin;c:\windows\system32;C:\Users\Rodney\AppData\Roaming\cabal\bin\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\; C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\
更新:我尝试在 VS2013 中创建一个新的解决方案和项目,它适用于 ML2014a。所以它一定是影响我现有项目或解决方案的东西,但很难追踪,因为我对 Matlab 没有间接依赖关系,并且已将所有路径设置为 2014a 版本。我的程序使用外部库 Boost、Intel MKL、Armadillo、Eigen、Quantlib。完全被难住了。
更新 2: 我已经检查并且我的程序在与 Visual Studio 环境之外的 2014a 链接时运行。当我尝试从 VS 运行它以进行调试时(“调试/开始调试”或“调试/不调试启动”),由于缺少 libmwmfl_scalar.dll,它不会运行。因此,出于某种原因,VS 坚持在程序本身不使用它时运行程序。
c++ - 在 C++ 代码中调用 Matlab - 使用 engine.h 中的方法
我编写了一个 C++ 程序,其唯一目的是调用 Matlab 代码。我有一个主要例程,其中
将文件(高维 90000*24 的矩阵)中的数据读入 C++ 结构
将这些结构传递给 Matlab 代码
在参数中使用这些结构启动 Matlab 例程
从 Matlab 获取输出数据并将它们存储在 C++ 结构中
在 2/ 中,矩阵是 Matlab 结构中的字段。说,该结构MATLAB_STRUCT
有几个矩阵字段,,,MATLAB_STRUCT.Z1
...MATLAB_STRUCT.Z2
和一些浮点字段MATLAB_STRUCT.flt1
,...
double**
将 C++ 矩阵 ( ) 设置为 Matlab 结构的字段的正确方法是什么?到目前为止,我想出了这个,使用engine.h
我写的要转换为 aconvertVectorToMxArray
的助手在哪里,double**
mxArray
但是我已经看到了一些其他技术,用于在 Cpp 代码中为 Matlab 结构分配值(虽然是浮点值,而不是矩阵),模仿 C++ 字符串中的命令行语法:
带有ep
指向 Matlab 引擎的指针。
是否可以使用命令行调整这种方法以将值分配给 Matlab 结构的矩阵类型字段?
为 Matlab 结构的矩阵类型字段赋值的最佳方法是什么?
matlab - 稀疏矩阵值作为另一个矩阵的索引
S
- N
xN
稀疏矩阵。
A
- M
x1 向量。
的非零值S
是 的索引A
。
我想计算一个向量x
,使得在的第i
'th 条目中x
:对于第'th 行中的
每个非零值,取并计算所有这些的总和并将其放入'th 的条目中。j
i
S
A[j]
j
i
x
在伪它应该是这样的:
我怎样才能以最有效的方式在matlab中做到这一点?
python - 在哪里以及如何为 IPython 集群任务启动可重用资源 (matlab.engine)
我决定创建一些测试台 Python 脚本,这些脚本将在各种环境下运行由多个开发人员开发的各种算法,这些算法都由 IPython 的并行分布式集群功能来运行。一个感兴趣的环境是 Matlab,但资源场景足够通用,可以从这个问题中抽象出规则。为了调用原型 Matlab 脚本,我决定使用Python 的 matlab 引擎. 这些引擎对象将在 Python 中实例化,但不是每个工作单元旋转一个,我想尽可能重用 Matlab 引擎,以避免创建和销毁那些强大的 Matlab 引擎对象的开销。我还处于阅读 IPython 并行文档的早期阶段,但我想我会先发制人地获得反馈,这样我就可以在遇到文档的特定部分时引起人们的注意。我什至可能会做出错误的假设,即我需要多个 Matlab 引擎来避免单个 Matlab 引擎实例的同步或线程安全问题。但是一般的问题是,如果我有一个可以并且应该被重用的资源,类似于隐藏在 Thread Local Storage 中的东西,这样当任务和作业接收下一个工作单元时,它们' 将重用该资源来完成他们的工作。一旦没有更多的工作单元,则可以在必要时关闭并销毁该资源。
python - 从matlab返回值到python(作为字典?)
我正在使用 python 的 matlab 引擎。我的目标是从 python 将一些信息传递给我的 matlab 脚本,然后存储结果。如果我创建了一个包含所有我想要的值的 matlab 数组,我就能够做到这一点,但我真的很想要一本字典(这样我就可以记住什么值与什么变量对应,或者如果我将来更改我的 matlab 脚本)。这是我尝试过的:
MATLAB函数:
在python中:
不幸的是,这并没有返回我的字典,而是一个我不知道如何处理的 matlab.object。是否可以返回我的字典,或者我应该简单地从 matlab 返回数字并在 python 中制作我的字典?
python - 从matlab python引擎调用matlab神经网络函数
我正在尝试使用 matlab python 引擎中的 matlab 神经网络工具箱。
例如,假设我想模拟以下示例http://uk.mathworks.com/help/nnet/ref/fitnet.html
然后我有以下python代码:
当我跑线时 eng.net = eng.fitnet(10.);
我收到以下错误:
我该如何解决?
编辑:
命令eng.net = eng.fitnet(10);
返回:
python - 从 Python 虚拟环境调用 matlab
我可以从我的系统 python 调用 MATLAB:
但是当我加载一个虚拟环境时,我现在得到一个段错误:
我已经为系统 python 和我的虚拟环境运行了setup.py 安装说明。
我期待像这样的问题,我必须DYLD_LIBRARY_PATH
明确设置会解决问题,但是当我运行我的系统 python 时,我没有设置那个环境变量。
导致此段错误的两个 python 实现之间可能有什么不同?
编辑:我在 2013 年末的 13" Macbook Pro 上使用 OS X Yosemite。我在新安装的虚拟环境(不是虚拟机)中使用 Python 2.7。
python - 当我在计算机上不活动时,如何使用守护程序启动 matlab?
我需要每天执行几个 matlab 函数。其中一些功能从互联网下载数据。例如,如果数据还没有准备好,它们就会失败,我希望它们在一段时间后重试。为了实现这一点,我有一个 python 脚本多次调用 matlab 函数直到成功,或者如果它们反复失败,请给我发送电子邮件。可能不是“最先进的”实现,但我不知道更好。守护进程每天都会调用 python 脚本。现在,如果我登录到计算机但当计算机(imac)休息一段时间时失败并返回值 1 和以下消息(守护程序错误日志)(我禁止它在节能器偏好设置中进入睡眠状态,则此方法有效。在至少我认为我是通过勾选“显示器关闭时防止计算机自动睡眠”来做到的。但是,
Matlab 写了一个故障转储segmentation violation
(我自己不能用它做任何事情)。
我猜计算机无论如何都会以某种方式进入睡眠状态,并且它无法启动matlab。会是这样吗?如果是这样,我该如何防止它进入睡眠状态或将其配置为唤醒以启动守护进程?
我在 google 中搜索了不同种类的关键字和标题问题,并在 stack exchange 上阅读了各种建议的主题。在关于 mathwork 许可证管理器的文档中,我发现也许我必须先启动一个 matlab 守护程序,然后才能调用 matlab。但是,我并不真正了解 matlab 发行版中的 lm 库的作用,因此我对运行它们犹豫不决。
这是我根据这个launchd 教程编写的 plist(存储在 /Library/LaunchDaemons 下)的副本:
只要我使用计算机,将 plist 存储在 ~/Library/LaunchAgents 下实际上就可以正常工作。我将 plist 移动到 /Library/LaunchDaemons 因为我认为这些也会在其他用户登录或计算机正在运行但没有人使用它时运行。我非常感谢您的帮助。
我实际上想在与我的工作帐户不同的用户帐户下运行守护程序,但我的试用失败了,我复制了工作目录并将文件路径更改为另一个用户帐户并将密钥用户名添加到 plist。守护进程甚至没有启动,而是返回了 78(我没有发现这个退出值可能意味着什么)。这有点偏离主题,但如果您有任何建议,我将不胜感激。