2017-01-21 1 views
-2

'who'関数を使用して複数の.matファイルから変数をロードし、変数 'A'に保存しようとしています。私はそのためにforループを使用しています。最初のファイルの読み込みが終了し、2番目のファイルの読み込みを開始すると、 'A'は最初の.matファイルの変数も表示します。問題は複数のループのために変数を保存する関数 'who'であり、各ループの後に 'who'をクリアしたい。これどうやってするの。特定のグローバル変数を消去する方法はあります。上記のコードからオクターブ単位で特定のグローバル変数をクリアする

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ファイルが10個の変数を持つ「」第二のループに次に5つの変数を持っている場合。誰がクリアされていません。

答えて

0

who(入力引数なし)は、ファイル内の変数ではなく現在の作業領域内のすべての変数のリストを返すので、実行しようとしていることは完全にはわかりません。あなたが実際にあなたがしたすべてのマットファイルから変数Aをロードするように言われて、それが見えること

vars = who('-file', filenames{i}); 

:それは、ファイル内の変数のリストを返すようにするために、あなたのような何かを行う必要があると思いますこれらのファイル全体に最大値Aが見つかりました。

これにアプローチするより良い方法は、出力をloadに指定し、データをstructにロードします。ここで、各変数は構造体内の別のフィールドとして格納されます。 loadに追加の入力を指定して、変数A(他の変数がある場合)のみをロードするように指定することもできます。あなたはそれはあなたがすでにいくつかの日前http://stackoverflow.com/questionsほぼ同じアドバイス(戻り値で使用する負荷)を与えたことを残念だ別々のstructに各matfileをロードして、比較

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]); 
+0

を行うことができます/ 41709118 /ロード中のファイルのオクターブが存在しない場合、ゼロで可変の値を割り当てる – Andy

+0

@Andyなぜそれは同情ですか?これは、同様のソリューションとは異なる問題です。ああ待っています、それは同じユーザーです....私は彼らが心にアドバイスを取っていないと思う – Suever

関連する問題