псевдокод

Создайте защищенный файл функции

Синтаксис

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

Описание

pcode(fun) запутывает код в fun.m и производит файл под названием fun.p, известный как P-файл. Если fun является папкой, то весь скрипт или файлы функции в той папке запутываются в P-файлах. MATLAB® создает P-файлы в текущей папке. Исходный файл .m или папка могут быть где угодно на пути поиска файлов.

pcode(fun1,...,funN) создает P-файлы N из перечисленных файлов. Если какие-либо входные параметры являются папками, то MATLAB создает P-файл для каждого файла .m, который содержат папки.

pcode(fun,'-inplace') создает P-файлы в той же папке как скрипт или файлы функции.

Примечание

  • Функция pcode запутывает ваши файлы кода, она не шифрует их. В то время как содержимое в файле .p трудно понять, оно не должно считаться безопасным. Не рекомендуется что вы Pcode-файлы, чтобы защитить вашу интеллектуальную собственность.

  • Функция pcode не поддерживает live скрипты или живет функции (.mlx).

Входные параметры

fun

Файл MATLAB или директория, содержащая файлы MATLAB. Если fun находится в пакете и/или папке класса, то pcode создает тот же пакет и/или структуру класса, чтобы содержать получившиеся P-файлы.

Входной параметр без расширения файла и это не папка, должна быть функция в пути MATLAB или в текущей папке.

При использовании подстановочных знаков * pcode игнорирует все файлы с расширениями кроме .m.

Примеры

свернуть все

Преобразуйте выбранные файлы от папки sparfun в P-файлы.

Создайте временную папку и задайте существующий путь к файлам .m.

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

Создайте P-файлы.

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

Временная папка теперь содержит закодированные P-файлы.

Сгенерируйте P-файлы из входных файлов, которые являются частью пакета и/или класса. Этот пример использует существующий класс в качестве примера MATLAB.

Задайте funclass как существующее папка класса, которая содержит файлы .m.

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

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


.              ..             BankAccount.m  

Создайте временную папку. Эта папка не имеет никакого пакета или структуры класса в это время.

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

Создайте P-файл для каждого файла .m в пути funclass. Поскольку входные файлы являются частью пакета и/или класса, MATLAB создает структуру папок так, чтобы выходной файл принадлежал тому же пакету и/или классу.

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

Вы видите, что P-файл находится в той же структуре папок.

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

Сгенерируйте P-файлы в той же папке как входные файлы с помощью опции inplace

Скопируйте несколько файлов MATLAB во временную папку.

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 

Создайте P-файлы в той же папке как original.m файлы.

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

Советы

  • Алгоритм pcode был перепроектирован в (релизе R2007b) MATLAB 7.5. Если ваш P-файл был сгенерирован до MATLAB 7.5, он не запустится в (релизе R2015b) MATLAB 8.6 или позже. Файлы, сгенерированные в 7,5, или более поздние версии, не могут запуститься в MATLAB 7.4 или ранее.

  • При запутывании всех файлов в папке pcode не запутывает файлов в подпапках.

  • P-файл более приоритетен по сравнению с соответствующим файлом кода MATLAB (.m) для выполнения, даже после модификаций к файлу кода.

  • MATLAB не отображает ни одного из комментариев справки, которые могут быть в файле оригинального кода MATLAB (.m).

Представлено до R2006a