gpt4 book ai didi

matlab - 通过 ismember 查找所有索引

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:57 24 4
gpt4 key购买 nike

这是 ismember 的示例之一中描述的内容:

Define two vectors with values in common.

A = [5 3 4 2]; B = [2 4 4 4 6 8];

Determine which elements of A are also in B as well as their corresponding locations in B.

[Lia,Locb] = ismember(A,B)

结果是:

Lia =
0 0 1 1

Locb =
0 0 2 1

B 中与 A(3) 匹配的最低索引的元素是 B(2)A(4) 等于 B(1)。有没有一种方法可以找到 所有 B 的元素索引与 A 中的相同元素相匹配?

最佳答案

您可以将输入参数交换为 ismember:

[tf, ia] = ismember(B, A)

对于您的示例,您应该得到:

tf =
1 1 1 1 0 0

ia =
4 3 3 3 0 0

这使您可以简单地通过以下操作找到 B 中等于 A(3) 的所有元素的索引:

find(ia == 3)

这里有一个针对一般情况的绝妙解决方案:

[tf, ia] = ismember(B, A);
idx = 1:numel(B);
ib = accumarray(nonzeros(ia), idx(tf), [], @(x){x});

注意输出是 cell array .对于您的示例,您应该得到:

ib = 
[]
[]
[2 3 4]
[ 1]

这意味着 B 中没有匹配 A(1)A(2) 的元素,A(3 ) 匹配元素 B(2)B(3)B(4),以及 A(4 ) 等于 B(1)

关于matlab - 通过 ismember 查找所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com