如何清除使用eval创建的变量?

时间:2013-07-14 15:21:06

标签: matlab

我在.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创建的变量的想法。

1 个答案:

答案 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

PS,
最好not to use i as a variable name in Matlab