比较matlab中的两个单元数组元素

时间:2012-12-02 20:00:17

标签: matlab cell-array

我正在尝试比较两个单元阵列,1x160(a)和80x1(b)。我的单元格数组由内部有许多字符串的单元格组成。我想比较每个字符串,看看它们是否相等,然后如果它们相等,则插入新数组,否则插入0。我找不到任何功能。我试过'isequal','strfind'和其他人。所有这些都给我下一条错误消息:

  

如果任何输入参数是单元格数组,则第一个必须是a   字符串的单元格数组,第二个字符串必须是字符数组。

这是我的代码!

function [inter]=Intersect2(a,b)
int=cell(0);
b2=[b;b];

for i=1:length(a)   
    if a{i,1}==b2{i,1}(1) ( or 'isequal','strfind')
       int{i}=a{i};
    else
        int{i}=0;
    end     
end

1 个答案:

答案 0 :(得分:8)

有许多方法可以比较字符数组,其中一种方法是strcmp

我们也会使用cellfun来避免循环。

a = {'Dude', 'I', 'am', 'a', 'moose'};
b = {'Well', 'I', 'am', 'a', 'mouse'};

index = cellfun(@strcmp, a, b);

这会将a的每个元素与b中的相应元素进行比较,在元素匹配时返回index的逻辑数组1并{{1}当他们不这样做时。

使用此选项指定匹配值:

0
  

int =

     

[]'我'是'''[]

如果愿意,您可以扩展此概念以找到集合交点。