我有一个在for循环中调用matlab的shell脚本。
for i in ${list}; do
nohup matlab -minimize -nodesktop -nosplash function_call(i, other_variables);
done
现在,如果打开matlab,每次在for循环中发出函数调用时,我的命令历史记录将包含一个短时间戳例如,在为10个不同的i运行循环之后,我的matlab命令历史如下
%-- 08/19/2013 02:41:23 PM --%
%-- 08/19/2013 02:53:11 PM --%
%-- 08/19/2013 03:11:52 PM --%
%-- 08/19/2013 03:12:58 PM --%
%-- 08/19/2013 03:17:44 PM --%
%-- 08/19/2013 03:24:51 PM --%
%-- 08/19/2013 03:30:36 PM --%
%-- 08/19/2013 03:35:33 PM --%
%-- 08/19/2013 03:43:21 PM --%
%-- 08/19/2013 04:04:31 PM --%
这不是很有用,它使我的命令历史混乱有没有办法避免每次从我的shell脚本启动matlab时添加一行命令历史记录?
最佳答案
您可以将此脚本放入startup.m
文件中,以便在MATLAB启动时删除这些行:
H.file = fullfile(prefdir, 'history.m');
copyfile(H.file, [H.file '.bak'], 'f');
H.log = fileread(H.file);
H.handle = fopen(H.file, 'w');
H.stat = fwrite(H.handle, regexprep(H.log, '(%-- [^%]* --%(\n|\r)*)*', ''));
H.stat = fclose(H.handle);
clear H
包含历史记录的文件位于首选文件夹
prefdir
中,名为history.m
其余的是一个正则表达式,与文件末尾的那些行匹配我将脚本中的所有变量放入一个结构中,以便可以通过clear H
清除它们H.stat =
用于避免创建ans
变量。