matlab にインポートするテキスト ファイルが多すぎます。129013 ファイル! 私は次のコードを使用しました:
for i=1:129013
k=importdata('filename.txt')
eval(['A', num2str(i) , ' = ' ,k) ,';']);
end
whos
もちろん、変数番号 129,013 は受け入れません。
問題はコードですか?また、定義された変数の数はいくつですか?
前もって感謝します!
matlab にインポートするテキスト ファイルが多すぎます。129013 ファイル! 私は次のコードを使用しました:
for i=1:129013
k=importdata('filename.txt')
eval(['A', num2str(i) , ' = ' ,k) ,';']);
end
whos
もちろん、変数番号 129,013 は受け入れません。
問題はコードですか?また、定義された変数の数はいくつですか?
前もって感謝します!
まず第一に、本当に使用することを主張する場合 (すべきではありません)、 (データを) 文字列と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
問題は次のように解決されました。
for k = 1:129013
fid=sprintf('%d.txt', k);
A{k} = importdata(['filename',fid]);
end