【问题标题】:How to find elements in an array based on a search from another array如何根据从另一个数组中的搜索来查找数组中的元素
【发布时间】:2017-02-11 02:24:21
【问题描述】:

假设我有两个数组:

a = [1 1 1 1 5 5 5 5 5 5 8 8;
    1 1 1 3 5 5 5 5 5 8 8 8;
    1 1 3 3 3 5 5 5 8 8 8 8;
    1 3 3 3 3 3 5 8 8 8 8 8;
    4 4 4 9 9 0 3 3 8 8 8 8;
    4 4 4 9 0 0 3 3 3 3 8 8;
    4 4 9 9 0 0 0 0 0 0 1 1;
    4 9 9 9 0 0 0 0 0 0 1 1;
    9 9 9 9 9 0 0 0 7 7 7 7];
b = [4 5 7];

我想要这样的回答:

ans = 
     0 0 0 0 1 1 1 1 1 1 0 0
     0 0 0 0 1 1 1 1 1 0 0 0
     0 0 0 0 0 1 1 1 0 0 0 0
     0 0 0 0 0 0 1 0 0 0 0 0
     1 1 1 0 0 0 0 0 0 0 0 0
     1 1 1 0 0 0 0 0 0 0 0 0
     1 1 0 0 0 0 0 0 0 0 0 0
     1 0 0 0 0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0 1 1 1 1

【问题讨论】:

标签: arrays matlab matrix find elements


【解决方案1】:

function ismember 正是这样做的:

ismember(a, b)

ans =

  9×12 logical array

   0   0   0   0   1   1   1   1   1   1   0   0
   0   0   0   0   1   1   1   1   1   0   0   0
   0   0   0   0   0   1   1   1   0   0   0   0
   0   0   0   0   0   0   1   0   0   0   0   0
   1   1   1   0   0   0   0   0   0   0   0   0
   1   1   1   0   0   0   0   0   0   0   0   0
   1   1   0   0   0   0   0   0   0   0   0   0
   1   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   1   1   1   1

【讨论】:

    【解决方案2】:

    不确定这是否是最有效的,但应该可以:

    c = zeros(size(a));
    for i = 1:numel(a)
        if ismember(a(i), b(:)) 
            c(i) = 1
        end
    end
    

    在一些较小的阵列上进行测试:

    octave:1> a = [1 1 5 5 8 8;1 5 1 3 5 8]
    a =
    
       1   1   5   5   8   8
       1   5   1   3   5   8
    octave:2> b = [5 8]
    b =
    
       5   8
    octave:3> c = zeros(size(a));
    for i = 1:numel(a)
        if ismember(a(i), b(:)) 
            c(i) = 1
        end
    end
    c =
    
       0   0   0   0   0   0
       0   1   0   0   0   0
    
    .
    .
    .
    
    c =
    
       0   0   1   1   1   1
       0   1   0   0   1   0
    
    c =
    
       0   0   1   1   1   1
       0   1   0   0   1   1
    

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2020-05-22
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多