我正在尝试使用' who'从多个.mat文件加载变量。功能并将其保存在变量A'中。我正在使用for循环。当我完成加载第一个文件并开始加载第二个文件后,然后“A'在第一个.mat文件中也显示变量。问题是功能'谁'保存变量,因为它是多个循环,我想清除'谁'每次循环后。我怎样才能做到这一点。有任何方法可以清除特定的全局变量。
for i=1:10; (10 mat files)
clear A;
clear who;
A=who; (all the variables in each mat file saved in A)
max(A(1,1); (finding max of variable A(1,1))
end
从上面的代码中,如果每个.mat文件都有5个变量,那么在第二个循环中,' who'有10个变量。谁没有被清除。
答案 0 :(得分:0)
由于who
(没有输入参数)返回当前工作空间中所有变量的列表而不是文件中的变量,因此并不完全清楚您尝试做什么。要让它返回文件中的变量列表,您需要执行以下操作:
vars = who('-file', filenames{i});
话虽如此,看起来您确实希望从已保存的所有mat文件中加载变量A
,并在这些文件中找到A
的最大值。
更好的方法是指定load
的输出,它将数据加载到struct
,其中每个变量都存储在结构中的单独字段中。您还可以指定load
的其他输入,以指定您只想加载变量A
(如果有其他变量)。然后,您可以将每个matfile加载到单独的struct
并进行比较
for k = 1:numel(filenames)
% Load variable A from this file into a struct
data(k) = load(filenames{k}, 'A');
end
% Now find the maximum value of A
maxA = max([data.A]);