假设我有一个矩阵a = [1,2,3;4,1,2;3,4,2]
。
我需要创建一个1
的逻辑矩阵,只要b
中有a
的元素。如果我的数组a==4 | a==1
是一个像b
这样的小数组,则相当于[1,4]
。
我知道一种实现方法:
b = [1,4];
c = logical(zeros(size(a)));
for i=b
c = c | a==i;
end
如果a
和b
很大,此解决方案可能无法很好地扩展。是否有更干净的方法可用于较大的阵列?
我希望a == b
会给我我想要的东西,但是没有。
答案 0 :(得分:2)
您可以使用ismember
输出一个逻辑数组,只要第一个输入的元素是第二个输入的成员,它就为true。输出与第一个输入的大小相同。
c = ismember( a, b );
在您的示例中:
a = [1,2,3;
4,1,2;
3,4,2];
b = [1,4];
c = ismember( a, b );
% >> c =
% [1,0,0;
% 1,1,0;
% 0,1,0]