MATLAB如何检查另一个char数组中是否存在字符数组的一部分?

时间:2017-04-26 14:41:19

标签: matlab

我遍历一个子目录,并在字符变量中获取扩展名为.txt的每个文件的名称。

var1 = dir('*.txt');

%creating a loop with index i
var2 = var1.name(i); %Getting first file name
arr1 = ['C001','C002','C003','C010'];
arr2 =  ['C011','C012','C013','C014'];

文件名格式为' C001.txt'我想检查文件名var2是属于arr1还是arr2(更准确地说,是变量var2的一部分还是没有扩展名的文件名)。我可以尝试使用contains(),但它适用于字符串而不是字符。做这项任务的好方法是什么?

1 个答案:

答案 0 :(得分:1)

您的方法存在一些问题......

  1. var2 = var1.name(i);行会给您一个错误。 vignette 函数返回dir,如果您在数组上循环,则需要首先访问数组元素 ,然后是结构字段:

    var2 = var1(i).name;
    
  2. name字段将包含文件名 plus 扩展名。看起来您想要在进行比较之前删除扩展程序,您可以使用structure array执行此操作:

    [~, var2] = fileparts(var1(i).name);
    
  3. 当存储多个字符数组时,您通常希望将它们存储在fileparts中,因为这样可以更容易处理,并且大多数函数都设计为在cell arrays上运行:

    arr1 = {'C001','C002','C003','C010'};  % Note the curly braces!
    arr2 = {'C011','C012','C013','C014'};
    
  4. 完成上述更改后,您可以使用(方便命名的)cell arrays of characters函数轻松检查var2arr1还是arr2的成员:

    if ismember(var2, arr1)
      % Do something
    elseif ismember(var2, arr2)
      % Do something else
    end