Quantcast

Documentation Center

  • Trial Software
  • Product Updates

pcode

Create protected function file

Syntax

pcode(fun)
pcode(fun1,...,funN)
pcode(fun,'-inplace')

Description

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.

pcode(fun1,...,funN) creates N P-files from the listed files. If any inputs are folders, then MATLAB creates a P-file for every .m file the folders contain.

pcode(fun,'-inplace') creates P-files in the same folder as the script or function files.

    Note:   The pcode function obfuscates your .m 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.

Input Arguments

fun

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.

Examples

expand all

P-Coding Multiple Files

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.

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

The temporary folder now contains encoded P-files.

P-Coding Files That Belong to a Package and/or Class

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.

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

You see that the P-file resides in the same folder structure.

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

P-Coding In Place

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.

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

More About

expand all

Tips

  • 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.

See Also

Was this topic helpful?