永发信息网

matlab 一个m文件运行后所有调用过的m文件保存下来

答案:3  悬赏:0  手机版
解决时间 2021-02-23 05:24
因为貌似Git好像没有针对matlab的选项。类似与于Git的思想,如何自动实现以下功能:一个m文件运行过后,记录在运行的过程中所用到的所有的m文件(最好能区分出系统自带和自己编写的),并把他们存储在一个文件夹内。
最佳答案
你的这个要求在很多情况下不容易实现。给你提供一些线索,供参考。
 
分析MATLAB函数调用关系的主要手段是depfun函数,基本用法是:
[list,builtins,classes] = depfun(fun)这会列出函数fun所需的M文件(完整路径)、内建函数以及类。
 
如果想把文件复制到某个文件夹,应该可以编写一个简单的文件遍历list即可。但这样做,可能存在以下几个问题:
1、MATLAB中很多M文件是经过重载的,都复制到一个文件夹中可能会涉及到同名文件的冲突;
2、有不少文件需要其它文件的支持,仅仅把M文件复制过去未必能独立使用(例如符号运算相关的函数)。
3、涉及到类的文件可能会非常复杂,例如,我试着分析控制系统工具箱的一个函数tf:
[list, builtins, classes] = depfun('tf.m')运行了十几分钟后,因内存不足而异常终止(2013a版本)。
4、我不确定depfun是通过静态代码分析还是动态代码分析获取函数间依赖关系的,但猜测可能是前者。目前分析的结果是,它主要是靠一个未公开的函数newdepfun实现代码分析的。
5、由于MATLAB现在的语法形式很多样,有些形式的调用关系很可能不能正确分析。例如通过匿名函数、回调函数、eval等调用的函数。
 
和depfun有关的还有函数depdir,可自行查看相关信息。还可以对一个文件夹生成所谓Dependency Report,详情请搜索主题Identify Program Dependencies。
 
另外,运行M文件后,可以通过函数inmem查看内存中有哪些函数、MEX文件以及类,但不包括完整的路径信息。
 
至于【区分出系统自带和自己编写的】这个要求,没太有实际意义。因为MATLAB自带的M文件与用户或第三方编写的没有什么本质区别,仅仅是所谓自带的文件存放在MATLAB的工具箱文件夹中,而且一般来说都经过多年的完善,相对比较稳定可靠而已。用户或第三方编写的工具如果很出色,也不排除将来会被MATLAB收购成为其系统自带的一部分(过去已经有不少这种情况)。
全部回答
editor界面里面菜单栏里有一个“run”按钮,直接点击就行了。或者在matlab界面里直接输入m文件的名称“xxx.m”也可以直接运行,但此时文件名不能是中文
系统文件和自己编写的都是m文件没法区分吧,可以打开工具箱看看,好多系统m文件你都可以改。除了少量想clc,clear,syms等等。 如果是自定义的m文件,可以自己改,在m文件开头和结尾各写一条语句(比如当前m文件的名字和时间)来做记录。这些记录连接到数据库或者一个简单的txt文本,就可以顺序记录了。 不过把所有m文件都做这种处理工作量不小。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
将方程1.5X-3y=1变形为用含x的式子表示y,并
无明灭则行灭,所以阿罗汉常在定于空么。以免
丛林缆车地址有知道的么?有点事想过去
荣耀8为什么玩不了侠盗飞车圣安地列斯
苏州有几个火车站 我去泰和,
以前有个电影,是说一个小孩吃肉被骨头卡住了
蔡伦使用什么造纸的
燕北路/G216(路口)地址在哪,我要去那里办事
证明两条平行线被第三条直线所截,同旁内角的
求雨果的介绍
英语翻译Adventure is just a bay away;Escap
baset是什么意思
四川盛世好利达商贸有限公司在什么地方啊,我
网上移动厅怎么换小卡?
隋代为什么避用中字
推荐资讯
怎样和一个女生交往啊,我喜欢上一个女孩,我
通榆县鸿兴供电所营业厅地址在哪,我要去那里
江苏滨海开发区(沿海)地址在哪,我要去那里办
工程勘察设计是什么
双A副食地址在什么地方,想过去办事
花呗的信用额度 能转成实体卡的么
韩国斯凯奇运动鞋是中国产地吗?
容易昂贵明智的反义词
自由运动是动物区别于其他生物的重要特征之一
重庆市歌乐山机械厂地址在哪,我要去那里办事
景星装饰工程有限公司在哪里啊,我有事要去这
【宋朝行政区划】秦朝西汉初东汉唐朝宋朝元朝
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?