有没有一种方法可以基于数组中的元素在matlab中掩盖矩阵?

时间:2018-06-29 06:38:06

标签: matlab

假设我有一个矩阵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

如果ab很大,此解决方案可能无法很好地扩展。是否有更干净的方法可用于较大的阵列?

我希望a == b会给我我想要的东西,但是没有。

1 个答案:

答案 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]