Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免matlab命令历史时间戳_Matlab_Shell_History - Fatal编程技术网

避免matlab命令历史时间戳

避免matlab命令历史时间戳,matlab,shell,history,Matlab,Shell,History,我有一个在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

我有一个在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时添加一行命令历史记录?

您可以将此脚本放入文件中,以便在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 

包含历史记录的文件位于首选项文件夹中,并命名为。其余的是一个正则表达式,它匹配文件末尾的那些行。我将脚本中的所有变量放入一个结构中,这样我就可以通过
清除H
来清除所有变量
H.stat=
用于避免创建
ans
变量

不幸的是,我没有对/usr/local/MATLAB/R2012a/toolbox/local/的写入权限,我认为startup.m必须位于该位置。我希望可以从shell脚本中传递一个选项,以防止它写入history.m。
startup.m
不需要位于
toolbox\local
中。它可以位于MATLAB启动文件夹(MATLAB启动时您所在的文件夹)中。此外,当您从shell脚本启动MATLAB时,可以直接使用
-sd
选项指定启动文件夹。因此,您可以将答案中的脚本放在该文件夹中,并且仅当您从shell脚本运行MATLAB时才让它执行,而不是以交互方式执行。