一時ファイルをディスクに書き込み、使い終わったらこれらのファイルを削除する必要があるMATLABスクリプトがあります。問題のコードは何度も実行されるループ内にあるため、(一時ディレクトリにファイルを蓄積させるのではなく)自分でファイルを削除することが重要です。ファイルがすぐに削除されない場合、スクリプトはすぐに大量のディスク領域を占有します。
以下のコードスニペットは機能すると思いましたが、それを単独で実行すると機能します。ただし、何らかの理由で、スニペットを大きなスクリプトに含めるとスニペットが失敗します。一時ファイルが削除されたり、一時ディレクトリが乱雑になったりすることはありません。
% create temporary file
myTmpFile = [tempname '.wav'];
fs = 32000;
wavwrite(zeros(fs,1),fs,myTmpFile);
% use the file here
% delete the file when we're done
prevState = recycle('off'); % turn recycle off to permanently delete files
delete(myTmpFile)
recycle(prevState); % restore the state of recycle
誰かが私が間違っていることを知っていますか?OSX10.7.3でMATLAB7.10.0を実行しています。
- 編集 *
私はそれを考え出した。以下の私の答えを参照してください。