如何根据字符串类型的Struct字段的值过滤MatLab结构数组

u4vypkhs  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(147)

我制作了一个结构数组,其中包含父目录中的每个文件和目录,使用

allfiles = dir(fullfile('.',"**"));.

但是,我只对名为'data.env'的文件感兴趣。
我相信目录树中每个文件的名称都包含在allfiles某行的‘name’字段中,每个文件的路径包含在‘Folders’字段中。如何从名称字段不是'data.env'的所有文件中删除所有行?
我最好的尝试如下:

ctr=0;
loclist = [];
for ii = 1:size(allfiles)
  if strcmp(allfiles(ii).name,'data.env')
    loclist(ctr+1)=ii;
    ctr=ctr+1;
  end
end
relevantFiles=allfiles(loclist);

但是,我确信有一个更好的解决方案可以将我的for循环矢量化。

1l5u6lss

1l5u6lss1#

您可以使用arrayFun生成一个逻辑索引向量,并使用它来创建结果。例如,

x = arrayfun(@(k)strcmp(allfiles(k).name,'data.env'),1:numel(allfiles));
relevantFiles = allfiles(x);

相关问题