如何找到 Matlab mex 文件的代码?

Posted

技术标签:

【中文标题】如何找到 Matlab mex 文件的代码?【英文标题】:how could find code of Matlab mex file? 【发布时间】:2016-08-03 04:36:13 【问题描述】:

我想将 Matlab 的 Imrotate 函数转换为 c++。 Matlab 在 Imrotate 中使用了一个 mex 文件(Imrotatemex)。 Matlab mex文件的代码怎么找?

【问题讨论】:

据我所知你不能。从 2006 年开始:se.mathworks.com/matlabcentral/newsreader/view_thread/138604,而 2009 年的答案或多或少是相同的:se.mathworks.com/matlabcentral/answers/… 所以我怀疑这种情况现在已经改变了。 【参考方案1】:

输入using可以看到matlab使用的函数

edit imrotate

此外,文档说:

%   Performance Note
%   ----------------
%   This function may take advantage of hardware optimization for datatypes
%   uint8, uint16, and single to run faster.

在这种情况下,Matlab 调用 imrotatemex,即编译后从 Matlab 调用的 C 代码,通常速度更快。

【讨论】:

【参考方案2】:

函数which显示指定项的完整路径,支持matlab函数、java方法、工作区变量以及当前工作文件夹或matlab路径上的任何文件:

which('imrotate')
which imrotate

如果您提供参数'-all',它将列出所有找到的引用:

which imrotate -all

当然,如果代码被混淆(pcode、shared library 或其他),则无需编辑太多。

【讨论】:

【参考方案3】:

在我查看了前两个答案之后。命令

which imrotatemex -all

给我结果:

/Applications/MATLAB_R2015a.app/toolbox/images/images/private/imrotatemex.mexmaci64 % 图片专用

如您所见,它在一个私人文件中

参考这个答案中的方法,我们有两种方法可以访问它: https://discussions.apple.com/thread/7583520?start=0&tstart=0

1.在finder中使用'Go'功能

使用路径 /Applications/MATLAB_R2015a.app/toolbox/images/images/private/

2.使用终端输入命令:

默认写入 com.apple.Finder AppleShowAllFiles YES

我搜索了一些结果,mexmaci64是一个c文件在matlab中编译的文件,所以我们不能直接编辑它。(?留这个问题)

从另一个方面来说,OpenCV 可能有一些基于 C 的实现。

问候, 林

【讨论】:

以上是关于如何找到 Matlab mex 文件的代码?的主要内容,如果未能解决你的问题,请参考以下文章

matlab 解决 错误使用 mex 未找到支持的编译器或 SDK

为啥 MEX 代码比 matlab 代码慢得多?

如何通过 Eclipse 编码和编译 Matlab mex 文件?

mex 文件崩溃,如何在 matlab 中使用 MATLAB_MEM_MGR?

Matlab Mex 文件 - 创建一个常量数组

为啥这段代码(在 Matlab 的 MEX 文件中使用 OpenMP)给出不同的结果?