如何在循环中保存除一个变量之外的所有变量?

How to save all the variables except one inside a loop?

我试图在循环中保存除一个变量之外的所有变量。但是一个错误,或者一个错误的文件扩展名,总是 MATLAB returns 我的答案。 我哪里错了?

for SESSION=1:3
    for trial_number=1:10
        eval(['save data_',num2str(SESSION),'_trial_',num2str(trial_number),'.mat'...
                            ,'-regexp','^(?!(RESPONSE)$). ']);
    end
end

direct 与您尝试做的事情有关的问题是,当连接您的字符串时,您未能在文件名和你的 -regexp 参数。

但是,我建议您利用 save 的能力来获取多个参数来清理并防止不必要的字符串连接:

save(filename, variablename)

其中 filename 是 *.mat 文件的路径,variablename 是代表您要保存的作品space 中的变量的字符串。

您还可以将 -regexp 标志值传递给 save 函数。 (以下示例假设您的正则表达式是正确的)。

output_file = sprintf('data_%d_trial_%d.mat', SESSION, trial_number);
save(output_file, '-regexp', '^(?!(RESPONSE)$.')

另一种方法(如果您不喜欢正则表达式或者您的匹配太难排除多个值)是获取工作中所有变量的列表space,删除我不想保存的那个,并将所有其他变量名显式传递给 save 函数。

variables = who;
toexclude = {'variable1', 'variable2'};
variables = variables(~ismember(variables, toexclude));
save(output_file, variables{:});