2

.mat ファイルに何千もの変数ストアがあります。一度に 1 つずつループにロードしています。x次に、を使用して、ロードされた変数をワークスペース変数に割り当てますeval。次に、ロードされた変数をクリアします。The current workspace already has too many variables問題は、約 60,000 回の反復後にmatlab がエラーを出すことです。しかし、ワークスペースを確認すると、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

これはコマンドに関係していると思いますevalevalの複数のコピーを作成していると思いますx。を使用して作成された変数をクリアする方法についてのアイデアeval

4

1 に答える 1