Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中比较单元阵列元素的有效方法_Matlab - Fatal编程技术网

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