我正在使用Matlab 2013b。我有一个目录中的excel文件列表,我想在循环中打开选定的文件来读出数据。 我只知道每个文件名的开头,而不是结尾。我有一个数字向量,提供文件名称(文件编号)的识别部分,我想逐个遍历excel文件,打开它们并提取数据,然后关闭它们。 有500个文件,每种格式:img _ **** ff *******。xlsx,其中第一组星号是我的文件编号,而第二组星号是未知的。
到目前为止,我已尝试使用以下命令列出目录中的内容:
list=dir('E:\processed\Img*');
filenames={list.name}
这提供了完整的文件名。 我在循环中尝试创建我知道存在的文件名部分:
x = sprintf('Img_%d_FF_',img(1,1));
然后我想我可以使用'查找'在'文件名'中查找我的部分文件名/字符串结构如上。我不认为我的数据类型的代码是正确的:
index = find(strcmp({list.name}, x)==1)
答案 0 :(得分:3)
你非常接近,但问题是strcmp
比较整个字符串,因为你只有起始部分,所以它不会匹配。我会使用strncmp
来比较字符串的第一个n
字符。我们可以根据字符串n
的长度确定x
的内容。
matches = strncmp({list.name}, x, numel(x));
thisfile = list(matches).name;