Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中按规则顺序导入数据文件_Matlab_Loops_For Loop_Import - Fatal编程技术网

Matlab中按规则顺序导入数据文件

Matlab中按规则顺序导入数据文件,matlab,loops,for-loop,import,Matlab,Loops,For Loop,Import,我有一个要导入的.txt数据文件列表。假设他们被这样称呼 file100data.txt file101data.txt。。。file109data.txt我想使用readtable导入它们 我尝试使用for指定一个向量a=[0:9],通过该向量matlab可以循环readtable命令,但我无法使其工作 for a = [0:9] T_a_ = readtable('file10_a_data.txt') end 我知道我不能把\u a_u放在我想让向量循环通过的地方,所以我的问

我有一个要导入的.txt数据文件列表。假设他们被这样称呼

file100data.txt file101data.txt。。。file109data.txt我想使用
readtable
导入它们

我尝试使用for指定一个向量a=[0:9],通过该向量matlab可以循环readtable命令,但我无法使其工作

for a = [0:9]
   T_a_ = readtable('file10_a_data.txt')   
end
我知道我不能把
\u a_u
放在我想让向量循环通过的地方,所以我的问题是我如何才能真正做到这一点


提前谢谢你

您需要将
a
的值转换为字符串,并将字符串组合在一起,如下所示:

   Tables = struct(); 
   for a = 0:9
       % note: using dynamic structure field names to store the imported tables
       fname = ['file10_' num2str(a) '_data'];
       Tables.(fname) = readtable([fname '.txt']);   
   end

您需要将
a
的值转换为字符串,并将字符串组合在一起,如下所示:

   Tables = struct(); 
   for a = 0:9
       % note: using dynamic structure field names to store the imported tables
       fname = ['file10_' num2str(a) '_data'];
       Tables.(fname) = readtable([fname '.txt']);   
   end

即使您的文件夹中缺少文件(例如,您有file100data.txt到file107data.txt,但缺少file108data.txt和file109data.txt),此解决方案也应该有效:


现在,请注意,在Matlab中动态命名变量通常被认为是不好的做法(参见示例)。您可能希望使用结构或单元格来存储数据

这是一个即使您的文件夹中缺少文件(例如,您有file100data.txt到file107data.txt,但缺少file108data.txt和file109data.txt)也可以使用的解决方案:


现在,请注意,在Matlab中动态命名变量通常被认为是不好的做法(参见示例)。您可能希望使用结构或单元格来存储数据

有没有一种没有结构字段的方法可以做到这一点?我不这么认为。这可能是最优雅的方式。您不想使用
eval
…您能告诉我如何使用eval吗,即使它不那么优雅?我面临时间压力,没有时间深入结构领域,因此我需要一个可能不那么优雅的快速解决方案。。那真是太好了:)对不起,
eval
真的很糟糕,你不应该告诉我们,看看为什么(例如)。你的时间限制不是我真正关心的问题,我给出了一个非常好的解决方案,应该可以很好地工作。如果你不想使用它或学习必要的构造,这是你的问题,但这真的没有那么难,明白吗。有没有一种方法可以不用结构字段来实现这一点?我不这么认为。这可能是最优雅的方式。您不想使用
eval
…您能告诉我如何使用eval吗,即使它不那么优雅?我面临时间压力,没有时间深入结构领域,因此我需要一个可能不那么优雅的快速解决方案。。那真是太好了:)对不起,
eval
真的很糟糕,你不应该告诉我们,看看为什么(例如)。你的时间限制不是我真正关心的问题,我给出了一个非常好的解决方案,应该可以很好地工作。如果你不想使用它或学习必要的构造,这是你的问题,但其实没那么难,请看。我在回答中避免使用
eval
,因为正如你非常正确地指出的那样,这是一种非常糟糕的做法。谢谢!请问第四行的7是什么意思?编辑:没关系,我知道了-它是这个名字的第七位!再次感谢你
files(i).name(7)
返回文件名中的第7个字符。例如,在file103data.txt中,它对应于“103”末尾的“3”。@Maria:请不要使用此选项,使用
eval
,这确实不是一个好的做法@Maria:我必须同意am304:我的解决方案可以快速解决您的问题,但从长远来看,你最好使用结构。我在回答中避免使用
eval
,因为正如你非常正确地指出的,这是非常糟糕的做法。谢谢!请问第四行的7是什么意思?编辑:没关系,我知道了-它是这个名字的第七位!再次感谢你
files(i).name(7)
返回文件名中的第7个字符。例如,在file103data.txt中,它对应于“103”结尾的“3”。@Maria:请不要使用这个,使用
eval
,这确实不是一个好的做法@Maria:我必须同意am304:我的解决方案可以快速解决您的问题,但从长远来看,您最好使用结构。