【问题标题】:How can i list all the files in a folder with a specific name in matlab?如何在matlab中列出具有特定名称的文件夹中的所有文件?
【发布时间】:2014-01-26 18:45:22
【问题描述】:

我一直在制作一个循环,为文件夹中的 121 个不同文件分配 Mx 名称。

    allFiles = dir( '*.xls''String' );
allNames = { allFiles.name };

for ii = 1:length(allNames) M(ii) = xlsread(allFiles(1i)); 
end

问题是没有错误消息,但它没有为我想要的值/文件分配任何名称。

listing = dir('*.xls');

disp(listing);

当我制作一个简单的 dir() 时,它会告诉我

 121x1 struct array with fields:
    name
    date
    bytes
    isdir
    datenum

但我必须将其设为字符串才能使 xlsread() 工作。

我想要的是为每个文件命名,以便我可以在 matlab 中处理它们(即添加两个矩阵)。

可能有什么问题?

【问题讨论】:

  • 错误信息是什么?有多少文件真正具有扩展名.xls'String?无论如何,括号与方括号:allfiles(ii) 返回该单元格(作为 1x1 单元格数组) - allfiles{ii} 返回该单元格的 contents
  • 没什么,没有错误信息。我在 1-24 中拥有的那些对象来自编辑器中的另一个脚本。工作区没有得到任何 Mx 对象。用 {} 代替 () 没有任何区别。
  • 您的实际代码中是否有这个错字:allFiles(1i) 而不是allfiles(ii)
  • 最初它只有一个 (i),但 matlab 建议将其设为 {1i} 以优化速度是参数。让它 {ii} 也没有任何区别。
  • "我怎样才能将 allFiles 转换为字符串?"正如@Notlikethat 所指出的,您可以使用{} 大括号代替() 括号。例如,从dir 命令中取出'String',然后尝试xlsread(allNames{ii}); - 看看你会得到什么。如果您只想尝试一个文件进行测试,您可以在命令行输入xlsread(allNames{0})xlsread(allFiles(0).name)。如果遇到关于字符串的错误,请切换使用{}()

标签: string matlab loops dir xlsread


【解决方案1】:

这个问题基本上只是错别字和变量混淆:

allFiles = dir('*.xls'); % correct file extension

for ii = 1:size(allFiles, 1) % allFiles has one row per file, so loop over those
    M{ii} = xlsread(allFiles(ii).name); % store matrix in cell array
end

请注意,M 现在是一个元胞数组,因为您不能在一个矩阵或向量中存储多个矩阵。

【讨论】:

  • 已确认。 M1-M121 现在按预期给了我一个矩阵。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2016-01-20
  • 1970-01-01
  • 2023-03-05
  • 2022-12-01
相关资源
最近更新 更多