我在.mat文件中有数千个变量存储。我一次一个地加载它们。然后,我使用x
为加载的变量分配工作空间变量eval
。然后,我清除加载的变量。问题是matlab在大约60,000次迭代后出现The current workspace already has too many variables
错误。但是,在检查工作区时,似乎只有5-10个变量。
for i = 1:m
load(sprintf('feat_%s.mat', ids{i}), sprintf('feat_%s', ids{i}));
eval(sprintf('x = feat_%s;', ids{i}));
clear(sprintf('feat_%s', ids{i}));
end
我认为这与eval
命令有关。我猜eval
正在创建x
的多个副本。任何关于哇清除使用eval
创建的变量的想法。
答案 0 :(得分:1)
最好不要使用eval
。您可以load
加入变量:
for ii=1:m
nm = sprintf('feat_%s', ids{ii} );
ld = load( [nm,'.mat'], nm );
x = ld.(nm); % access loaded variable WITHOUT eval
clear ld; % clear the loaded variable
end