问题标签 [mex]
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.
matlab - 分析 mex 函数
我刚刚用 c++ 重写了一个 Matlab 程序作为一个 mex 函数来加快速度,结果非常好。这个优化决定是一个非常非常好的主意,在没有线程的情况下可以将速度提高 20 倍。它仍然让我对 mex 函数花费时间并想要确定可能的瓶颈感到好奇。
我正在寻找一种分析 mex 函数的方法。matlab 探查器用处不大,我下载的其他探查器(免费和试用版)都希望运行可执行文件。我不是 mex-guru,但据我所知,运行 mex 的唯一方法是在 Matlab 中。mex 函数编译为 dll,但称为 .mex64。所以这个问题应该类似于分析一个dll。为了编写 c++ mex 函数,我使用了单用户 VS2005(即,不是团队版本),并且在 x64 平台上运行。
有谁知道分析 mex 函数的好方法?当我从 Matlab 开始时,我应该使用什么工具以及如何使用它?或者有没有其他方法来分析 c++ 代码?
wcf - 没有 MEX 端点的带有 BasicHttpBinding 的 WCF 服务可以被绝对陌生的人利用吗?
据我了解:如果您没有 MEX 端点/WSDL,您的服务基本上是不可发现的。只有了解您的数据合同的人才能使用您的服务。
这个断言是否成立,或者是否有办法让互联网的恶意居民弄清楚如何调用/使用没有 MEX 端点的服务?
编辑:正如安德鲁指出的那样,这种策略不应该被认为是真正安全的。我想知道更多关于在与外部消费者的 QA 阶段是否可以避免随机滥用。
.net - 在哪里启用元数据(在配置中启用)?
我有一个基本的 wcf 服务,当我去 wcfctestclient 对其进行测试时,我收到一条错误消息,提示找不到元数据,请添加它等等。不幸的是,错误弹出窗口中的 MSDN 链接已损坏,并且我的 WCF 服务的 app.config启用了元数据:
除此之外,我没有在代码中的其他任何地方更改任何元数据设置。
我在哪里可以启用元数据来修复错误?
c - C C++ 中的 matlab 和 matlab 中的 C C++
在 C C++ 中调用 matlab 和在 matlab 中调用 C C++ 似乎有几种方法。当我尝试在这里列出它们时,如果我错过了什么,请指出。
在matlab中调用C C++,也有两种方法。第一个是调用 C 共享库中的函数。第二个是将 C C++ 代码构建成二进制 MEX 文件,该文件将从 MATLAB 命令行调用。对于第一种方法,C 共享库是否只是通用库,即没有更改其用于 matlab 的 C 代码并从 gcc 等通用 C 编译器编译?
要在 C C++ 中调用 matlab 代码,有两种方法可用。第一个是Matlab引擎。第二种是使用 MATLAB Compiler mcc 从您的 MATLAB 代码创建 C 或 C++ 共享库。
此外,matlab 和 C C++ 可以通过在某些文件(例如 mat 文件、文本文件)中写入和读取数据来进行通信。
这里有不止一种方法来实现每个目标,你能告诉我哪些案例最适合使用它们中的哪一个吗?即调用 C 共享库中的函数 VS 将 C C++ 代码构建成二进制 MEX 文件,Matlab 引擎 VS 将 Matlab 代码编译成 C C++ 共享库。
谢谢并恭祝安康!
dll - MATLAB:mex 加载的 DLL 不会卸载?
我有一个名为 mex 的模块p.mexw64
,它使用另一个名为p.dll
mex 模块在加载p.dll
时加载,因为它链接到它的 lib 文件。
通常,当我想重新编译时,p.dll
我会执行clear p;
. 这卸载p.mexw64
,然后又卸载p.dll
。
除非它没有。在某些我无法真正量化的情况下,它会p.mexw64
被卸载(我看到它在 Process Explorer 中),但p.dll
仍处于加载状态且未被释放。
然后我被迫关闭 matlab 以重新编译d.dll
,这很痛苦。
在使用它的 mex 消失后,什么可能使这个 dll 保持加载状态?
python - 将python嵌入到os x上的matlab mex文件中
我正在尝试将 Python 嵌入到 OS X 上的 MATLAB mex 函数中。我已经看到可以做到这一点的参考资料(例如这里),但我找不到任何 OS X 特定信息。到目前为止,我可以成功构建一个嵌入式 Python(所以我的链接器标志必须没问题),我还可以毫无问题地使用默认选项构建示例 mex 文件:
但是当我尝试构建一个嵌入 Python 的 mex 文件时,我遇到了未定义符号 main 的问题。这是我的 mex 函数:
以下是 mex 编译步骤:
我尝试过使用 arch 设置(我添加了 -arch i386 以尝试将所有内容保持为 32 位 - 我正在使用 python.org 32 位 2.5 构建)和链接器标志的顺序,但还没有去任何地方。网上也找不到很多。有人对我如何构建它有任何想法吗?
[编辑:可能应该添加我在 OS X 10.6.1 和 MATLAB 7.8 (r2009a)、Python 2.5.4 (python.org) - 我已经尝试过 gcc-4.0 和 gcc-4.2 (apple)]
memory-management - Matlab:避免在mex中分配内存
我正试图让我的 mex 库避免所有内存分配。
到目前为止,mex 得到了一个输入,使用创建了一些矩阵mxCreate...()
并返回了这个输出。
但现在我想修改这个接口,以便 mex 本身不会进行任何分配。
我想到的是 mexFunction 将获取矩阵作为输入以填充值并将这个相同的矩阵作为输出返回。
这应该是可能的吗?
让我想到这是否是我需要做的事情的轻微警报是,左侧参数作为 const 出现在 mexFunction 中,而右侧参数是非常量。要将输入矩阵作为输出返回,我需要删除此 const。
matlab - 如何在 MATLAB MEX 文件中创建双精度的 ND 矩阵?
我需要在 MEX 文件中创建一个 3-D 矩阵。在 API 参考中,提到mxCreateCellArray
了 ND 单元数组、mxCreateStructArray
结构等。但没有mxCreateDoubleArray
提到。这可能吗?
matlab - 编译后的 MATLAB:为什么我的应用程序最后会挂起?
我正在使用 MATLAB 的部署工具来编译一个使用 mex 库的简单项目。可执行文件运行正常并执行它应该做的事情,除了当它应该完成时,什么都没有发生。它只是坐在那里。
当我编译任何其他项目时,例如文档中的魔方示例,它工作正常。可执行文件完成并退出。
我disp('at end');
在 .m 文件的末尾添加了一个,并且确实显示了这一行,所以我知道它到达了 .m 文件的末尾,但它只是没有退出该过程。
为什么会这样?
编辑:
在 MATLAB 中它正常运行,在'at end'
. 代码太长了,这里就不放了。除了使用 mex 库之外,它还做了相当正常的事情。
c - matlab中用于mex函数的安全、快速的CFLAGS
我正在将许多低级操作从本机 matlab 代码转换为 C/mex 代码,速度非常快。(这些低级操作可以在 .m 代码中矢量化完成,但我认为我会遇到大数据的内存命中 b/c。无论如何。)我注意到用不同的 CFLAGS 编译 mex 代码可能会导致轻微的改进。例如CFLAGS = -O3 -ffast-math
,确实提供了一些加速,但代价是轻微的数值不准确。
我的问题:什么是“最好的” CFLAGS 使用,不会产生太多其他副作用?看来,至少
CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nans
一切都还好。我不确定-funroll-loops
。
另外,您将如何半自动地优化使用的 CFLAGS 集而不发疯?