原文地址:http://zmryyj.blog.163.com/blog/static/98450751201132081451490/

首先,P文件为了保护知识产权设计的一种加密文件,是不能查看的。
运行比较简单,和调用m文件方法一样。
下面是一些解释。
P文件是对应M文件的一种预解析版本(preparsed version)。因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。所以我们就预先作解释,那么以后再使用该M文件时,便会直接执行对应的已解析版本,即P文件。但又因为Matlab的解析速度非常快,一般不用自己作预解析。只有当一些程序要调用到非常多的M文件时,如GUI应用程序时,才会作预解析,以增加以后的调用速度。 
P文件可以用来作保密代码之用,如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。如果你的代码不想被别人看到,那可以给他P文件。
如何使用.p文件
1.首先,将当前工作目录切换到.p文件所在的目录,然后就可以在左侧的工作空间窗口看见该目录所包含的所有文件了,当然包括.p文件啦~
2.由于.p文件是.m文件的预解析版本(不能查看、编辑),显然.p文件同.m文件一样都是一个函数体,只不过此时该函数是一个黑盒子罢了。举例如test.p文件便意味着存在一个已经编好的函数test(如何实现我们不知道),为调用这个函数test,我们需要知道它的参数形式 此时在命令窗口下键入help test,即可查看到test函数的参数 然后我们就可以调用啦
如何自己制作.p文件
在Matlab中,我们经常把语句或函数写在一个M文件里,便于模块化和代码重用,比如,写一个test.m的文件(即自定义一个test函数):
% ———————-
% test.m
a = 1;
b = 2;
% ———————-
这个M语句文件,或:
% ———————-
% test2.m
function a = test2(b)
a = b * 2;
% ———————-
这个M函数。
我们在Command Window里输入:
>> test
即是等于输入了
>> a = 1;
>> b = 2;
而输入:
>> a = test2(2)
a =
     4
便是执行了一个函数。
以上的内容我想大部份人都知道是怎么一回事了,以下说一说P代码文件。
如果在Command Window里输入:
>> pcode test
便会在相应test.m的文件夹里产生了test.p。如果这时在Command Window里输入:
>> test
其实是运行了test.p,而不是test.m。
P文件是对应M文件的一种预解析版本(preparsed version)。因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。所以我们就预先作解释,那么以后再使用该M文件时,便会直接执行对应的已解析版本,即P文件。但又因为Matlab的解析速度非常快,一般不用自己作预解析。只有当一些程序要调用到非常多的M文件时,如GUI应用程序时,才会作预解析,以增加以后的调用速度。
如Matlab的当前目录(Current Directory)有test.m文件,作预解析后,又有test.p文件。因为P文件的调用优先级比M文件要高,所以当你调用test时,会作优先选择而调用了test.p。
可以修改test.m的代码为:
% ———————-
% test.m
a = 3;
b = 4;
% ———————-
再在Command Window里调用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.
会出现一个Warning,警告你所调用的P文件比同名的M文件要旧,即表示M文件已被修改了。尽管如此,调用的还是旧的P文件,即得出a = 1和 b = 2。
P文件可以用来作保密代码之用,如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。如果你的代码不想被别人看到,那可以给他P文件。
pcode函数也可以应用在M函数文件。
参考:
http://frenselx.spaces.live.com/blog/cns!3D7342371BEE8602!290.entry
----------------------------------------------------------------------------
生成p文件的方法很简单,在command wondow里面用 mcc -B pcode file.m命令转化为pcode文件,据说是不会被反编译的。
补充一下,p文件也不一定是绝对安全的,p文件是由AES算法加密的,AES的密钥又被RSA算法加密,p文件在执行时很有可能是被解密后执行,这么说来RSA的私钥很有可能也藏在matlab的某处。 另外,可以通过一些非常规手段获取一些p文件中的语句, 不过,总体上来说p文件的可靠性还是比较高的。

Matlab中使用.p文件的方法相关推荐

  1. matlab中如何读写txt,Matlab中读取txt文件的几种方法

    Matlab中读取txt文件的几种方法 matlab读取文本文件的几种函数: 1.load--适合读取纯数据文本: 2.importdata--只读取数据,自动省略数据格式前后的字符,超大文件不适合: ...

  2. matlab程序改为m文件名,在MATLAB中,程序文件的扩展名为.m,所以程序文件也称为M文件...

    在MATLAB中,程序文件的扩展名为.m,所以程序文件也称为M文件 答:√ 磷酸果糖激酶-2催化6-磷酸果糖生成的产物是 答:2,6-二磷酸果糖 <人类行为的经济学分析>的作者是( ). ...

  3. 在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数

    在做研究的时候我们经常需要对模型的参数就行相应的选择,然而有没有觉得每次更改一个参数都需要运行一次仿真程序觉得很无聊呀,运行完程序还要看效果怎么样,然后再根据效果来调整参数,再次运行程序,如此反复. ...

  4. Matlab之netCDF格式文件读取方法

    Matlab之netCDF格式文件读取方法 目录 一.netCDF格式文件 1.简介 2.NetCDF的数据结构 二.Matlab读取netCDF使用到的函数 1.ncdisp() 2.ncinfo( ...

  5. matlab中hold all,matlab中hold on的使用方法

    matlab中hold on的使用方法 发布时间:2020-08-15 14:01:54 来源:亿速云 阅读:107 作者:小新 小编给大家分享一下matlab中hold on的使用方法,希望大家阅读 ...

  6. 在MATLAB中生成矩阵的三种方法

    在MATLAB中生成矩阵的三种方法 1. 直接输入法 2. 外部文件读入法 3.特殊矩阵函数生成法 1. 直接输入法 (1)矩阵所有元素必须在[]内 (2)矩阵中同行元素以逗号','或空格分隔 (3) ...

  7. python模糊查找文件夹名字_python实现在目录中查找指定文件的方法

    本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 复制代码 代码如下: import os from glob import glob ...

  8. 使用c++进行Windows编程中各种操作文件的方法 【转】

    https://www.zhaokeli.com/article/8232.html 使用c++进行Windows编程中各种操作文件的方法 [转] 来源:赵克立博客 分类: C/C++ 标签:--发布 ...

  9. php中读取大文件实现方法详解

    php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...

最新文章

  1. 搭建自己的前端自动化测试脚手架(三)
  2. 一张图读懂八大全国一体化算力网络国家枢纽节点一览
  3. Redhat 或 CentOS 发行版本号
  4. nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
  5. jsp内置对象--response
  6. WinAPI【远程注入】利用远程线程注入DLLDelphi版
  7. 【089】◀▶ Microsoft Office 技巧
  8. 单片机技术与c语言编程教学大纲,单片机原理及应用课程教学大纲
  9. metro3000 OSN2500 OSN3500 华为传输 华为光端机
  10. Spring Aop 5种通知写法及参数JoinPoint详解
  11. 理论+实操 :华为NAT地址转换
  12. 视频转换生成二维码,扫码直接播放,在线制作,一键上传
  13. mac 树莓派_您真的可以用45树莓派替换台式PC或Mac吗
  14. 用C语言打印简单图案(爱心\圆形\三角形等)
  15. IntelliJ IDEA 小技巧之Bookmark(书签)的使用
  16. ubuntu调试android设备不识别
  17. 凹凸中的相与国 ——读《大清相国》
  18. Redis | 非常重要的中间件
  19. c语言 扫描码,一种全键盘扫描码的获取方法
  20. django ulr中配置name的作用

热门文章

  1. Decawave UWB定位原理
  2. Citrix AppCenter 初始化设置指南
  3. 【刷leetcode,拿Offer-004】627. Swap Salary(数据库,sql)
  4. 菜鸟学习Node.js--express(一)
  5. 前端方案(时间/图片/PWA/微信公众号/图片前端压缩/动画与过渡/新兴方案/屏幕适配)
  6. 重置目录服务还原模式(DSRM)密码
  7. 草图大师SU模型如何快速的下载到软件中?
  8. 初中计算机基础知识说课稿,初中信息技术说课稿
  9. 文本情感分析难点和方法
  10. Zabbix5.0监控Redis