如何查看 .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)。
我在网上看到可以直接用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)。