Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

pcode

创建对代码内容进行了模糊处理的可执行文件

说明

示例

pcode(item) 对搜索路径中 .m 文件或文件夹中的代码进行模糊处理,并生成扩展名为 .p 的 P 文件。如果 item.m 文件,则生成的文件是 item.p。如果 item 是一个文件夹,则该文件夹中的所有脚本或函数文件都在当前文件夹中进行模糊处理。在执行中 P 文件优先于对应的 .m 文件,即使已对 .m 文件进行了修改也是如此。

注意

pcode 函数对您的程序文件进行模糊处理,但不对其加密,因此 P 文件不应被视为安全的。不推荐用 P 编码文件来保护您的知识产权。

pcode(item1,item2,...,itemN) 基于以逗号分隔的列表中指定的每个 .m 文件或文件夹创建 P 文件。

示例

pcode(___,'-inplace') 在与输入相同的文件夹中创建 P 文件。在所有其他输入参数后指定 '-inplace'

示例

全部折叠

将一个函数文件转换为一个 P 文件。

在当前文件夹中名为 myfunc.m 的文件中,定义一个返回三次多项式平方根的函数。

function y = myfunc(x)
y = sqrt(x.^3 + x.^2 + x + 1);
end

基于 myfunc.m 创建一个 P 文件。当您调用 myfunc 时,请确定 MATLAB® 使用哪个文件。

pcode myfunc
a = myfunc(3);
which myfunc
c:\myMATLABfiles\myfunc.p

sparfun 文件夹中选定的文件转换为 P 文件。

创建临时文件夹并定义 .m 文件的现有路径。

tmp = tempname;
mkdir(tmp)
cd(tmp)
filename = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');

创建 P 文件。

pcode(filename)
dir(tmp)
.            ..           sprand.p     sprandn.p    sprandsym.p  sprank.p     

临时文件夹此时包含了已编码的 P 文件。

基于作为类的一部分的输入文件生成 P 文件。(同样的过程可以应用于作为包的一部分的文件。)本示例使用现有的 MATLAB 示例类。

classfolder 定义为包含 .m 文件的现有类文件夹。

classfolder = fullfile(docroot,'techdoc','matlab_oop', ...
    'examples','@BankAccount')
dir(classfolder)
classfolder =

C:\Program Files\MATLAB\R2019a\help\techdoc\matlab_oop\examples\@BankAccount


.              ..             BankAccount.m  

创建临时文件夹。该文件夹此时不包含类结构体。

tmp = tempname;
mkdir(tmp)
cd(tmp)
dir(tmp)
.            .. 

为路径 classfolder 中的每个 .m 文件创建一个 P 文件。由于输入文件为类的一部分,MATLAB 创建文件夹结构以便输出文件属于相同的类。

pcode(classfolder)
dir(tmp)
.             ..            @BankAccount 

P 文件位于相同的文件夹结构中。

dir('@BankAccount')
.              ..             BankAccount.p  

在与输入文件相同的文件夹中生成 P 文件。

将多个 .m 文件复制到临时文件夹。

filename = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');
tmp = tempname;
mkdir(tmp)
copyfile(filename,tmp)
dir(tmp)
.            ..           sprand.m     sprandn.m    sprandsym.m  sprank.m 

在与原始 .m 文件相同的文件夹中创建 P 文件。

pcode(tmp,'-inplace')
dir(tmp)
.            sprand.m     sprandn.m    sprandsym.m  sprank.m     
..           sprand.p     sprandn.p    sprandsym.p  sprank.p  

输入参数

全部折叠

要模糊处理的 .m 文件或文件夹,指定为字符向量或字符串标量。

  • 没有文件扩展名且不是文件夹名称的输入参数必须为 MATLAB 路径上或当前文件夹中的函数。

  • 使用通配符 * 时,pcode 会忽略所有不带 .m 扩展名的文件。

  • pcode 函数不支持实时脚本或函数 (.mlx)。

  • 如果 item 位于包或类文件夹中,则 pcode 创建相同的包或类结构体以容纳生成的 P 文件。

.m 文件或文件夹的列表,指定为以逗号分隔的字符向量或字符串标量列表。该列表可以同时包括文件和文件夹。

详细信息

全部折叠

版本兼容性

pcode 算法已在 MATLAB 版本 R2007b 中重新设计。如果 P 文件是在 R2007b 之前生成的,则它不会在 R2015b 或更高版本中运行。在 R2007b 或更高版本中生成的文件不会在 R2007a 或更低版本中运行。

对相关文件进行 P 编码

除了您的程序之外,您还可能希望模糊处理您的程序所依赖的其他函数和脚本。要确定运行程序所需的文件,请使用 matlab.codetools.requiredFilesAndProducts 函数。

模糊处理代码

P 文件是经过模糊处理的只执行形式的 MATLAB 代码。您不能在 MATLAB 编辑器或实时编辑器中打开 P 文件。

在 R2006a 之前推出