Matlab中比较单元阵列元素的有效方法
我有两个细胞阵列。我需要计算第一个单元数组中没有出现在第二个单元数组中的元素的分数。单元阵列中的元素将非常大,因此循环将花费相当长的时间,有没有有效的方法?下面是一个小例子Matlab中比较单元阵列元素的有效方法,matlab,Matlab,我有两个细胞阵列。我需要计算第一个单元数组中没有出现在第二个单元数组中的元素的分数。单元阵列中的元素将非常大,因此循环将花费相当长的时间,有没有有效的方法?下面是一个小例子 x = {'a b' ;'b c' ;'c d'} y = {'1 a' ;'a b' ;'b d'} 我曾经尝试过做cellfun(@strcmp,x,y),但是当x和y的大小相同时,会逐个元素进行比较。相反,我需要检查x中每个元素的'ab'是否在y中,以此类推。上面的答案应该是2/3,这意味着3个元素中有2个不在y
x = {'a b' ;'b c' ;'c d'}
y = {'1 a' ;'a b' ;'b d'}
我曾经尝试过做cellfun(@strcmp,x,y)
,但是当x和y的大小相同时,会逐个元素进行比较。相反,我需要检查x中每个元素的'ab'
是否在y中,以此类推。上面的答案应该是2/3,这意味着3个元素中有2个不在y
单元数组中
有矢量化的想法吗?您想要:
因此,分数是sum(notIn)/numel(x)
>> notIn = ~ismember(x,y)
notIn =
0
1
1