当我只知道Matlab中部分文件名时,如何打开一些xlsx文件?

时间:2016-12-03 15:03:43

标签: matlab directory find

我正在使用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)

1 个答案:

答案 0 :(得分:3)

你非常接近,但问题是strcmp比较整个字符串,因为你只有起始部分,所以它不会匹配。我会使用strncmp来比较字符串的第一个n字符。我们可以根据字符串n的长度确定x的内容。

matches = strncmp({list.name}, x, numel(x));
thisfile = list(matches).name;