0

matlab にインポートするテキスト ファイルが多すぎます。129013 ファイル! 私は次のコードを使用しました:

    for i=1:129013
k=importdata('filename.txt')
eval(['A', num2str(i) , ' = ' ,k) ,';']);
end
whos

もちろん、変数番号 129,013 は受け入れません。

問題はコードですか?また、定義された変数の数はいくつですか?

前もって感謝します!

4

2 に答える 2

3

まず第一に、本当に使用することを主張する場合 (すべきではありません)、 (データを) 文字列とeval連結しようとしているため、問題が発生します。k

['A', num2str(i) , ' = ' ,k) ,';']

代わりに、文字列 kを連結して、ロードした を参照するk必要があります。

eval(['A', num2str(i), '= k;']);

また、実際のコードは異なる可能性がありますが、同じファイル( filename.txt) を何度も読み込んでいるようです。

そうは言っても、このような方法でワークスペースに何千もの変数を作成することevalは非常に貧弱なアプローチであり、それらの変数を使用して何かを行うには、さらに を使用する必要がありますevalさらに、R2015b より古いバージョンの MATLAB では、MATLAB は変数に制限されているため、作成しようとしている数の変数を作成することさえできません2^16

セル配列を使用してデータを格納する方がはるかに優れています。

for k = 1:129013
    A{k} = importdata(sprintf('filename%d.txt', k));
end
于 2016-08-23T13:02:31.233 に答える
0

問題は次のように解決されました。

for k = 1:129013
fid=sprintf('%d.txt', k);
    A{k} = importdata(['filename',fid]);
end
于 2016-08-24T14:10:43.363 に答える