我想在 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
variables。
最好使用单元格数组来存储数据。
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