查找具有指定元素

时间:2016-09-11 17:59:19

标签: matlab

我想找到包含另一个矩阵的指定元素的矩阵行。

例如,a=[1 2 3 4 5 6 7]b=[1 2 0 4;0 9 10 11;3 1 2 12]。现在,我想找到b的行,其中包含至少三个a元素。为此,我使用bsxfun命令如下:

c=find(sum(any(bsxfun(@eq, b, reshape(a,1,1,[])), 2), 3)>=3);

它适用于低维矩阵但是当我想将它用于高维矩阵时,例如,当b的行数为192799时,MATLAB会出现以下错误:

Requested 192799x4x48854 (35.1GB) array exceeds maximum array size preference. 
Creation of arrays greater than this limit may take a long time and cause MATLAB 
to become unresponsive. See array size limit or preference panel for more information.

是否还有其他命令可以执行此任务而不会产生上述高维矩阵的行为?

1 个答案:

答案 0 :(得分:2)

可能的解决方案:

a=[1 2 3 4 5 6 7] 
b=[1 2 0 4;0 9 10 11;3 1 2 12]
i=ismember(b,a)
idx = sum(i,2)
idx = find(idx>=3)