Create protected function file
pcode(fun) obfuscates the code in fun.m and produces a file called fun.p, known as a P-file. If fun is a folder, then all the script or function files in that folder are obfuscated in P-files. MATLAB® creates the P-files in the current folder. The original .m file or folder can be anywhere on the search path.
MATLAB file or directory containing MATLAB files. If fun resides within a package and/or class folder, then pcode creates the same package and/or class structure to house the resulting P-files.
An input argument with no file extension and that is not a folder must be a function in the MATLAB path or in the current folder.
When using wild cards *, pcode ignores all files with extensions other than .m.
Convert selected files from the sparfun folder into P-files.
Create a temporary folder and define an existing path to .m files.
tmp = tempname; mkdir(tmp) cd(tmp) fun = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');
Create the P-files.
. .. sprand.p sprandn.p sprandsym.p sprank.p
The temporary folder now contains encoded P-files.
Generate P-files from input files that are part of a package and/or class. This example uses an existing MATLAB example class.
Define funclass as an existing a class folder that contains .m files.
funclass = fullfile(docroot, 'techdoc', 'matlab_oop', ... 'examples', '@BankAccount') dir(funclass)
funclass = C:\Program Files\MATLAB\R2013a\help\techdoc\matlab_oop\examples\@BankAccount . .. BankAccount.m
Create a temporary folder. This folder has no package or class structure at this time.
tmp = tempname; mkdir(tmp); cd(tmp); dir(tmp)
Create a P-file for every .m file in the path funclass. Because the input files are part of a package and/or class, MATLAB creates a folder structure so that the output file belongs to the same package and/or class.
. .. @BankAccount
You see that the P-file resides in the same folder structure.
. .. BankAccount.p
Generate P-files in the same folder as the input files using the option inplace
Copy several MATLAB files to a temporary folder.
fun = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m'); tmp = tempname; mkdir(tmp); copyfile(fun,tmp) dir(tmp)
. .. sprand.m sprandn.m sprandsym.m sprank.m
Create P-files in the same folder as the original.m files.
. sprand.m sprandn.m sprandsym.m sprank.m .. sprand.p sprandn.p sprandsym.p sprank.p
The pcode algorithm was redesigned in MATLAB 7.5 (Release R2007b). You can run older P-files in any current version of MATLAB; however, upcoming releases will not run P-files created before version 7.5. Files generated in 7.5, or later versions, cannot run in MATLAB 7.4 or earlier.
When obfuscating all files in a folder, pcode does not obfuscate any files within subfolders.
A P-file takes precedence over the corresponding .m file for execution, even after modifications to the .m file.
MATLAB does not display any of the help comments that might be in the original .m file.