我试图找到一种更有效的方法,在使用'for'循环之外,在cellarray中查找数组的索引。我的问题如下:
a = [6,3]
b = {[1,10];[1,8,10];[8,10];[2,8];2;[2,4,5];[2,4];[];[3,6];[3,4,6];6;[3,5,6];[6,9];[1,6,9];[1,6,7,9]}
我需要在'b'中找到'a'的索引。我当前的方法有效,但是当你增加'b'的大小时这是非常缓慢和麻烦的。我对数组的顺序不感兴趣,只是内容相同,这就是我使用'setxor'方法的原因。下面的代码显示了我目前如何执行此操作的示例。
for num = 1:size(b,1)
new_array(num,1) = isempty(setxor(a, b{num,1}));
if (new_array(num,1) == 1)
indexOfArray = num;
break;
end;
end;
有更好的方法吗? 提前致谢, 文森特
答案 0 :(得分:5)
使用cellfun
:
find(cellfun(@(x) isempty(setxor(a,x)), b))
如果您只想要第一次巧合,请使用
find(cellfun(@(x) isempty(setxor(a,x)), b), 1)
根据setxor
使用您的巧合定义。
感谢@Dan和@DennisJaheruddin的建设性意见,这些意见已纳入此答案。