通常在运行长内存昂贵的程序时,我想清除除了一些特定变量之外的所有内容 如果想要删除只是clear varA varB可以使用一些变量,但是删除除了这个特定变量以外的所有变量呢?
exc*_*aza 20
如上所述,clearvars包括用于在清除余数时将变量保留在工作空间中的语法:
a = 1; b = 1; c = 1; d = 1;
keepvars = {'c', 'd'};
clearvars('-except', keepvars{:});
Run Code Online (Sandbox Code Playgroud)
哪个功能如预期.
a1 = 1; a2 = 1; b = 1; c = 1;
keepvars = 'a\d'; % regex pattern
clearvars('-except', '-regexp', keepvars);
Run Code Online (Sandbox Code Playgroud)
保留a1和a2正如预期的那样.
And*_*eak 10
利用这一事实,即who和whos具有可存储在变量中的返回值.前者返回字符串的单元格数组,后者是结构数组.根据你的需要,前者就足够了:
%// don't delete these '
keepvars = {'varA','varB'};
%// delete these
delvars = setdiff(who,keepvars);
clear(delvars{:},'delvars');
Run Code Online (Sandbox Code Playgroud)