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

Ser*_*ion 2 matlab cell-array

我想比较两个单元阵列,1x160(a)和80x1(b).我的单元格数组由内部有许多字符串的单元格组成.我想比较每个字符串,看看它们是否相等,然后如果它们相等,则插入新数组,否则插入0.我找不到任何功能.我试过'isequal','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
Run Code Online (Sandbox Code Playgroud)

nic*_*ale 8

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

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

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

index = cellfun(@strcmp, a, b);
Run Code Online (Sandbox Code Playgroud)

这将比较每个元素a与相应的元素b,返回一个逻辑数组index,即1元素匹配时和0不匹配时.

使用它来分配匹配值:

int = cell(1, length(a));
int(index) = a(index);
Run Code Online (Sandbox Code Playgroud)

int =

[] '我是一个' []

如果您愿意,可以扩展此概念以查找集合交集.

  • 优秀的弦乐选择. (2认同)