加载中…
个人资料
水龙一谭
水龙一谭
  • 博客等级:
  • 博客积分:0
  • 博客访问:73,656
  • 关注人气:21
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

[分享] matlab 的启动脚本与退出脚本

(2015-02-13 16:22:48)
标签:

it

matlab

分类: 写代码
背景:matlab 软件系统在启动时会自动执行 startup.m 脚本,退出时会自动执行 finish.m 脚本。当然这两个文件须放在 matlab 的搜索路径上,在 windowns 系统下建议放在 %MATLAB/work 目录下。matlab 提供这两个接口脚本,允许用户自定义 matlab 工作平台。

我自己修改了这两个脚本(是脚本,不是函数),目的在于想定制这样的事情:在 matlab 启动时,自动打开日志记录(diary on),全程记录在命令窗口的输入输出,日志文件以日期命名。退出 matlab 时,保存当前工作区(workspace)的变量,及当前工作目录(pwd),并关闭日志(diary off,也许不必要)。让 matlab 下次启动时,自动进入上次退出时的工作目录,载入上次留存的变量。

1.  startup.m 内容如下:

startdir = 'd:/MATLAB/work';
cd(startdir);

% get time and transform to yyyymmdd
ct=now;
yy=datestr(ct, 10);
md=datestr(ct,6);
md=regexprep(md,'/','');
ymd=[yy md];
ti=datestr(ct,13);

% record log with filename based on date
logName=[cd '\log\matlab' ymd '.log'];
diary(logName);
disp(['% Now is:' datestr(now) 'MATLAB work BEGIN...']);
clear;

% load last workspace saveed in recent.mat, and cd to last work directory
load recent;
try
cd (lastpath);
catch
disp('can not cd to last path!');
end
clear lastpath;

% show current
disp(pwd);
whos;

%EOF

2. finish.m 内容如下:

lastpath=pwd;
% startdir = '~/.matlab';
startdir = 'd:/MATLAB/work';
cd(startdir);
disp('Saving workspace data to "recent.mat"');
clear startdir;
save recent;
disp(['% Now is: ' datestr(now) 'MATLAB work END.']);
diary off;

%EOF

3. 使用说明

我在 windowns 系统将 matlab 安装在 D:\MATLAB 目录下,所以将这两个脚本的启动目录变量设置为: startdir = 'd:/MATLAB/work'; 。如果安装在不同目录下,须修改这个赋值语句。比如在 linux 系统下,建议改为 startdir = '~/.matlab'; 。总之要求这个目录是 matlab 启动时就能找到的目录。

另外要求在这个目录下建立一个 log 子目录,用于保存每天的日志文件(如果真的用 matlab 很频繁,历史累积的日志嫌太多了,自己手动删掉不要的日志好了)。此外,finish.m 脚本会在这个目录下自动建立一个 recent.mat 数据文件(如果不喜欢这个名字,须要在 finish.m 与 startup.m 中修改为一致为文件名)。

事实上,我只在多年前初学 matlab 时,才会用到 diary 记录日志。但现在还是习惯让它自己默默地记录日志吧,总是有益无坏的,虽然很少会回去查看了。所以这两个启动退出脚本,主要还是用于记录继承 matlab 上次会话的工作目录与变量。

0

阅读 评论 收藏 禁止转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有