2

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

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

这是我的代码!

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
4

1 回答 1

8

比较字符数组的方法有很多,其中之一是strcmp.

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

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

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

这会将 的每个元素与a中的相应元素进行比较b,返回一个逻辑数组,该数组index表示1元素何时匹配,0何时不匹配。

使用它来分配匹配值:

int = cell(1, length(a));
int(index) = a(index);

整数 =

[] '我是一个' []

如果你愿意,你可以扩展这个概念来找到集合的交点。

于 2012-12-02T20:32:08.283 回答