【问题标题】:What do I have to add at the beginning of this loop?我必须在这个循环的开头添加什么?
【发布时间】:2010-02-28 00:21:24
【问题描述】:

如何使用 for 循环读取以下文件:(循环可以忽略文件名中的字符吗?)

abc-1.TXT
cde-2.TXT
ser-3.TXT
wsz-4.TXT
aqz-5.TXT
iop-6.TXT

我必须在这个循环的开头添加什么??

for i = 1:1:6  
    nom_fichier = strcat(['MyFile\.......' num2str(i) '.TXT']);

【问题讨论】:

  • Matlab 应该如何知道文件名中数字前的字符是什么?或者您想读取名称以数字结尾的所有文件?读取文件的顺序重要吗?请提供更多详细信息。

标签: matlab filereader


【解决方案1】:

您可以使用DIR 命令避免构造文件名。例如:

myfiles = dir('*.txt');
for i = 1:length(myfiles)
    nom_fichier = myfiles(i).name;
    ...do processing here...
end

【讨论】:

    【解决方案2】:

    首先,你为什么要在这里使用 strcat ?这本身就是一个单一的字符串。所有的连接都已经用括号 [] 完成了。

    ['MyFile\.......' num2str(i) '.TXT']
    

    接下来,我不确定您的问题是什么。是如何加载数据?如果文件是简单的分隔数字,每行的数字相同,那么 load 就足以加载它们,或者您可能需要 textread。

    我的猜测是你不知道如何构建文件名的主要部分。你可以这样做:

    Names = {'abc' 'cde 'ser' 'wsz' 'aqz' 'iop'};
    for i = 1:6
      fn = ['MyFile',filesep,Names{i},'-',num2str(i),'.TXT'];
      data = load(fn);
    
      % do other stuff ...
    
    end
    

    如果您不想通过键入名称来创建具有名称的变量,则使用 dir,也许像这样创建文本文件名列表:

    Names = dir('MyFile\*.TXT');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多