如何查看 .mex 文件的源代码

How to view the source code of a .mex file

我在网上看到可以直接用edit rgb2gray打开源文件,但是我运行进入了rgb2gray.m文件中的另一个函数,不知道怎么弄查看。

第 54-55 行包含以下函数:

if threeD
  I = images.internal.rgb2graymex(X);

如何查看此 rgb2graymex 函数的源代码?

rgb2graymex 顾名思义,是一个 .mex 文件。 .mex 文件是预编译文件,因此您无法查看其内容,除非您使用异国情调的反编译器(通常不会给出 100% 的结果),或者从编写它的人那里获取源代码,但不是专有代码会发生这种情况。

阅读有关 MEX 文件的更多信息 on the MathWorks site

一般来说,您看不到 .mex 文件的内容,正如@Adriaan 在他的回答中指出的那样。

不过,您在评论中提到,您真正想要的是从变换矩阵中找到用于将 RGB 转换为灰度的系数。您可以在您引用的部分正下方的代码中找到这些内容:

  T    = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);
  coef = T(1,:);

这给了我:

coef =
   0.298936021293775   0.587043074451121   0.114020904255103

现在您确实无法最终证明 .mex 文件正在做与此相同的事情;但是当你传入一个大的 mxnx3 RGB 图像而不是一个小的 nx3 RGB 颜色图时,.mex 文件只是为了加快速度。如果它使用不同的系数,我会感到非常惊讶。我刚刚完成的一些实验表明,.mex 文件与使用代码中存在的系数之间只有最小的数值差异 (<1e-15)。