我已经编写了一个 MATLAB 独立函数 myfun.m
我想与同样拥有 MATLAB 的人分享它。他们可以使用函数,但我不想让他们看到函数内部的内容。
到目前为止,我已经看到使用 pcode
执行此操作的一种方法: 我会创建 myfun.p
使用 pcode('myfun.m')
然后我会分享myfun.p
与人。 这是正确的吗?
上面的方法似乎有两个问题:
- 当我输入
help myfun
时, 我得到No help found for myfun.p.
尽管我已经为原始的 .m 创建了一个简短的帮助(通过紧跟在函数声明之后的注释) - 数学 says .p 文件包含原始 .m 的模糊、未加密版本
除了pcode
还有其他方法吗?可以纠正上述一个或两个问题?
最佳答案
从包含所有帮助文本的
.m
文件生成.p
文件时,所有注释都将被删除。如果您想为您的.p
文件提供帮助文本,您可以创建一个与.p
同名的单独的.m
文件仅帮助文本的文件。由于函数解析的顺序,.p
文件在程序化使用时会被求值,而在寻求帮助时会引用.m
文件。请注意 Mathworks 下表中
.p
和.m
文件的顺序:When determining the precedence of functions within the same folder, MATLAB considers the file type, in this order:
- Built-in function
- MEX-function
- Simulink model files that are not loaded, with file types in this order:
- SLX file
- MDL file
- App file (.mlapp) created using MATLAB App Designer
- Program file with a .mlx extension
- P-file (that is, an encoded program file with a .p extension)
- Program file with a .m extension
这是真的,
.p
文件的内容被混淆了,但用户对文件内容进行逆向工程并非易事,因此可能不值得他们为此付出努力这样做。您可以找到几个声称可以从.p
文件生成.m
文件的实用程序,但是那些.m
文件可能看起来什么都不是就像原始来源一样。如果您真的很关心算法的安全性,您总是可以将敏感部分写入已编译的 mex 文件中。
关于MATLAB:安全共享函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007099/