在Matlab中如何对图像名称文件进行排序?

3

我在同一个文件夹中有两种不同类型的DICOM(医学成像文件)。我想将它们分别排序到两个不同的数组中,一个是SE006,另一个是SE014。

    MR-ST001-SE006-0001.dcm... MR-ST001-SE006-0021.dcm  
    MR-ST001-SE014-0001.dcm... MR-ST001-SE014-0013.dcm 

我一直在使用类似下面这样的代码,但是我认为它是错误的,我想我有一些语法错误。

  if image == 'MR-ST001-SE006-%4.4.dcm'
      SE006(end+1) = image 
  if image == 'MR-ST001-SE014-%4.4.dcm'
      SE014(end+1) = image 

有人有什么技巧可以帮助改进这个,使其工作吗?

2个回答

4
你可以使用DIR命令将所有文件读入单元数组中,然后使用CELLFUN向量化@jonsca的解决方案。
files = dir('MR-ST001-SE*.dcm');
dcmnames = {files(:).name}';
idx06 = ~cellfun(@isempty,strfind(dcmnames,'SE006'));
idx14 = ~cellfun(@isempty,strfind(dcmnames,'SE014'));
SE006 = dcmnames(idx06);
SE014 = dcmnames(idx14);

2

使用 strfind()isempty() 的组合,再结合 if/else if 语句块,可以对它们进行排序。

 if ~isempty(strfind(yourstr,'SE006'))
     #add it to your list
 end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接