Create content-obscured, executable files
pcode(fun) obfuscates the
fun.m and produces a file called
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
or folder can be anywhere on the search path.
from the listed files. If any inputs are folders, then MATLAB creates
a P-file for every
.m file the folders contain.
P-files in the same folder as the script or function files.
pcode function obfuscates your
code files, it does not encrypt them. While the
content in a
.p file is difficult to understand,
it should not be considered secure. It is not recommended that you
P-code files to protect your intellectual property.
pcode function does not support live scripts or
live functions (
MATLAB file or directory containing MATLAB 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
Convert selected files from the
Create a temporary folder and define an existing path
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.
funclass as an existing a class
folder that contains
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
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
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
. sprand.m sprandn.m sprandsym.m sprank.m .. sprand.p sprandn.p sprandsym.p sprank.p
pcode algorithm was redesigned
in MATLAB 7.5 (Release R2007b). If your P-file was generated
prior to MATLAB 7.5, it will not run in MATLAB 8.6 (Release
R2015b) or later. Files generated in 7.5, or later versions, cannot
run in MATLAB 7.4 or earlier.
When obfuscating all files in a folder,
not obfuscate any files within subfolders.
A P-file takes precedence over the corresponding MATLAB code
.m) for execution, even after modifications
to the code file.
MATLAB does not display any of the help comments
that might be in the original MATLAB code file (