是否有某种方法可以仅删除脚本末尾的matlab脚本中生成的变量,而不删除脚本中未生成的工作空间的任何其他变量?
注意:脚本不是函数。
基本上我想在一行
中执行以下操作save abc.mat % saves the whole workspace
some_script % call the script
clear % deletes the variables created by the script along with the whole workspace
load abc.mat % again loads the whole earlier workspace
答案 0 :(得分:6)
在脚本之前使用who
,然后在脚本之后使用;比较结果(setdiff
)以检测脚本中创建的变量,然后仅clear
。
以下代码中的变量名称varsbefore
,varsafter
和varsnew
应保证在脚本之前或脚本中不被使用。
varsbefore = who; %// get names of current variables (note 1)
some_script
varsafter = []; %// initiallize so that this variable is seen by next 'who'
varsnew = []; %// initiallize too.
varsafter = who; %// get names of all variables in 'varsbefore' plus variables
%// defined in the script, plus 'varsbefore', 'varsafter' and 'varsnew'
varsnew = setdiff(varsafter, varsbefore); %// variables defined in the script
%// plus 'varsbefore', 'varsafter' and 'varsnew'
clear(varsnew{:}) %// (note 2)
关于代码的说明:
who
返回包含所有变量名称的字符串的单元格数组。clear
的函数形式,输入参数采用从单元格数组生成的comma-separated list形式。答案 1 :(得分:0)
您可以通过以下方式创建structures
个变量:
FOO_STRUCT.foo_var = var_from_abc.mat + rand(1);
FOO_STRUCT.foo_var2 = 10*log10(FOO_STRUCT.foo_var);
FOO_STRUCT.foo_var3 = FOO_STRUCT.foo_var2 + var_from_abc.mat;
大写部分是structure
名称。小写部分是variable
。
您可以在脚本中使用工作区中的变量,进行工作,并在脚本末尾删除整个structure
clear FOO_STRUCT