避免使用matlab命令历史时间戳

iva*_*van 5 shell matlab history

我有一个shell脚本,在for循环中调用matlab.

for i in ${list}; do 
    nohup matlab -minimize -nodesktop -nosplash function_call(i, other_variables);
done
Run Code Online (Sandbox Code Playgroud)

现在,如果我打开matlab,每次在for循环中发出function_call时,我的命令历史记录将包含一个短时间戳.例如,在为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 --%
Run Code Online (Sandbox Code Playgroud)

这不是很有用,它使我的命令历史变得混乱.每次从我的shell脚本启动matlab时,有没有办法避免命令历史记录添加一行?

Moh*_*nia 4

您可以将此脚本放入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 
Run Code Online (Sandbox Code Playgroud)

包含历史记录的文件位于首选项文件夹中prefdir,名为history.m. 其余部分是与文件末尾的那些行匹配的正则表达式。我将脚本中的所有变量放入一个结构中,以便我可以通过 清除它们clear HH.stat =用于避免创建ans变量。

  • `startup.m` 不需要位于 `toolbox\local` 中。它可以位于 MATLAB 启动文件夹(MATLAB 启动时所在的文件夹)。此外,当您像从 shell 脚本一样启动 MATLAB 时,可以直接使用“-sd”选项指定启动文件夹。因此,您可以将答案中的脚本放置在该文件夹中,并*仅*当您从 shell 脚本运行 MATLAB 时才执行它,但不能以交互方式执行。 (2认同)