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^16variables

最好使用单元格数组来存储数据。

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 回答