首先,P文件為了保護(hù)知識(shí)產(chǎn)權(quán)設(shè)計(jì)的一種加密文件,是不能查看的。
運(yùn)行比較簡(jiǎn)單,和調(diào)用m文件方法一樣。
下面是一些解釋。
P文件是對(duì)應(yīng)M文件的一種預(yù)解析版本(preparsed version)。因?yàn)楫?dāng)你第一次執(zhí)行M文件時(shí),Matlab需要將其解析(parse)一次(第一次執(zhí)行后的已解析內(nèi)容會(huì)放入內(nèi)存作第二次執(zhí)行時(shí)使用,即第二次執(zhí)行時(shí)無(wú)需再解析),這無(wú)形中增加了執(zhí)行時(shí)間。所以我們就預(yù)先作解釋,那么以后再使用該M文件時(shí),便會(huì)直接執(zhí)行對(duì)應(yīng)的已解析版本,即P文件。但又因?yàn)镸atlab的解析速度非常快,一般不用自己作預(yù)解析。只有當(dāng)一些程序要調(diào)用到非常多的M文件時(shí),如GUI應(yīng)用程序時(shí),才會(huì)作預(yù)解析,以增加以后的調(diào)用速度。 
P文件可以用來(lái)作保密代碼之用,如果你給別人一個(gè)M文件,別人可以打開(kāi)來(lái)看到你所有的代碼和算法。如果你的代碼不想被別人看到,那可以給他P文件。
如何使用.p文件
1.首先,將當(dāng)前工作目錄切換到.p文件所在的目錄,然后就可以在左側(cè)的工作空間窗口看見(jiàn)該目錄所包含的所有文件了,當(dāng)然包括.p文件啦~
2.由于.p文件是.m文件的預(yù)解析版本(不能查看、編輯),顯然.p文件同.m文件一樣都是一個(gè)函數(shù)體,只不過(guò)此時(shí)該函數(shù)是一個(gè)黑盒子罷了。舉例如test.p文件便意味著存在一個(gè)已經(jīng)編好的函數(shù)test(如何實(shí)現(xiàn)我們不知道),為調(diào)用這個(gè)函數(shù)test,我們需要知道它的參數(shù)形式 此時(shí)在命令窗口下鍵入help test,即可查看到test函數(shù)的參數(shù) 然后我們就可以調(diào)用啦
如何自己制作.p文件
在Matlab中,我們經(jīng)常把語(yǔ)句或函數(shù)寫(xiě)在一個(gè)M文件里,便于模塊化和代碼重用,比如,寫(xiě)一個(gè)test.m的文件(即自定義一個(gè)test函數(shù)):
% ———————-
% test.m
a = 1;
b = 2;
% ———————-
這個(gè)M語(yǔ)句文件,或:
% ———————-
% test2.m
function a = test2(b)
a = b * 2;
% ———————-
這個(gè)M函數(shù)。
我們?cè)贑ommand Window里輸入:
>> test
即是等于輸入了
>> a = 1;
>> b = 2;
而輸入:
>> a = test2(2)
a =
     4
便是執(zhí)行了一個(gè)函數(shù)。
以上的內(nèi)容我想大部份人都知道是怎么一回事了,以下說(shuō)一說(shuō)P代碼文件。
如果在Command Window里輸入:
>> pcode test
便會(huì)在相應(yīng)test.m的文件夾里產(chǎn)生了test.p。如果這時(shí)在Command Window里輸入:
>> test
其實(shí)是運(yùn)行了test.p,而不是test.m。
P文件是對(duì)應(yīng)M文件的一種預(yù)解析版本(preparsed version)。因?yàn)楫?dāng)你第一次執(zhí)行M文件時(shí),Matlab需要將其解析(parse)一次(第一次執(zhí)行后的已解析內(nèi)容會(huì)放入內(nèi)存作第二次執(zhí)行時(shí)使用,即第二次執(zhí)行時(shí)無(wú)需再解析),這無(wú)形中增加了執(zhí)行時(shí)間。所以我們就預(yù)先作解釋,那么以后再使用該M文件時(shí),便會(huì)直接執(zhí)行對(duì)應(yīng)的已解析版本,即P文件。但又因?yàn)镸atlab的解析速度非常快,一般不用自己作預(yù)解析。只有當(dāng)一些程序要調(diào)用到非常多的M文件時(shí),如GUI應(yīng)用程序時(shí),才會(huì)作預(yù)解析,以增加以后的調(diào)用速度。
如Matlab的當(dāng)前目錄(Current Directory)有test.m文件,作預(yù)解析后,又有test.p文件。因?yàn)镻文件的調(diào)用優(yōu)先級(jí)比M文件要高,所以當(dāng)你調(diào)用test時(shí),會(huì)作優(yōu)先選擇而調(diào)用了test.p。
可以修改test.m的代碼為:
% ———————-
% test.m
a = 3;
b = 4;
% ———————-
再在Command Window里調(diào)用test:
>> test
Warning: P-file C:\Program Files\MATLAB71\work\test.p is older than M-file C:\Program Files\MATLAB71\work\test.m.
C:\Program Files\MATLAB71\work\test.p may be obsolete and may need to be regenerated.
Type "help pcode" for information about generating P-files from M-files.
會(huì)出現(xiàn)一個(gè)Warning,警告你所調(diào)用的P文件比同名的M文件要舊,即表示M文件已被修改了。盡管如此,調(diào)用的還是舊的P文件,即得出a = 1和 b = 2。
P文件可以用來(lái)作保密代碼之用,如果你給別人一個(gè)M文件,別人可以打開(kāi)來(lái)看到你所有的代碼和算法。如果你的代碼不想被別人看到,那可以給他P文件。
pcode函數(shù)也可以應(yīng)用在M函數(shù)文件。
參考:
http://zmryyj.blog.163.com/blog/static/98450751201132081451490/
http://frenselx.spaces.live.com/blog/cns!3D7342371BEE8602!290.entry
閱讀記錄: read twice, understand completely