Matlab中的P代碼文件是什么,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、任丘網(wǎng)站維護(hù)、網(wǎng)站推廣。我們經(jīng)常把語句或函數(shù)寫在一個(gè)M文件里,比如:
% ----------------------
% test.m
a = 1;
b = 2;
% ----------------------
這個(gè)M語句文件,或:
% ----------------------
% test2.m
function a = test2(b)
a = b * 2;
% ----------------------
這個(gè)M函數(shù)。
我們在Command Window里輸入:
>> test
即是等于輸入了
>> a = 1;
>> b = 2;
而輸入:
>> a = test2(2)
a =
4
便是執(zhí)行了一個(gè)函數(shù)。
以上的內(nèi)容我想大部份人都知道是怎么一回事了,以下說一說P代碼文件。
如果在Command Window里輸入:
>> pcode test
便會在相應(yīng)test.m的文件夾里產(chǎn)生了test.p。如果這時(shí)在Command Window里輸入:
>> test
其實(shí)是運(yùn)行了test.p,而不是test.m。
P文件是對應(yīng)M文件的一種預(yù)解析版本(preparsed version)。因?yàn)楫?dāng)你第一次執(zhí)行M文件時(shí),Matlab需要將其解析(parse)一次(第一次執(zhí)行后的已解析內(nèi)容會放入內(nèi)存作第二次執(zhí)行時(shí)使用,即第二次執(zhí)行時(shí)無需再解析),這無形中增加了執(zhí)行時(shí)間。所以我們就預(yù)先作解釋,那么以后再使用該M文件時(shí),便會直接執(zhí)行對應(yīng)的已解析版本,即P文件。但又因?yàn)镸atlab的解析速度非???,一般不用自己作預(yù)解析。只有當(dāng)一些程序要調(diào)用到非常多的M文件時(shí),如GUI應(yīng)用程序時(shí),才會作預(yù)解析,以增加以后的調(diào)用速度。
如Matlab的當(dāng)前目錄(Current Directory)有test.m文件,作預(yù)解析后,又有test.p文件。因?yàn)镻文件的調(diào)用優(yōu)先級比M文件要高,所以當(dāng)你調(diào)用test時(shí),會作優(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.
會出現(xiàn)一個(gè)Warning,警告你所調(diào)用的P文件比同名的M文件要舊,即表示M文件已被修改了。盡管如此,調(diào)用的還是舊的P文件,即得出a = 1和 b = 2。
P文件可以用來作保密代碼之用,如果你給別人一個(gè)M文件,別人可以打開來看到你所有的代碼和算法。如果你的代碼不想被別人看到,那可以給他P文件。
pcode函數(shù)也可以應(yīng)用在M函數(shù)文件。
看完上述內(nèi)容,你們掌握Matlab中的P代碼文件是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!