gpt4 book ai didi

performance - 查找矩阵中多个值对的所有索引

转载 作者:行者123 更新时间:2023-12-02 08:26:33 24 4
gpt4 key购买 nike

假设我有一个包含可能值对的矩阵 A 和一个包含所有值对的矩阵 B:

    A = [1,1;2,2;3,3];
B = [1,1;3,4;2,2;1,1];

我想创建一个矩阵 C,其中包含 A 允许的所有对(即 C = [1,1;2,2;1,1])。

使用 C = ismember(A,B,'rows') 只会显示第一次出现的 1,1,但我需要两者。

目前我使用 for-loop 来创建 C,它看起来像:

    TFtot = false(size(B(:,1,1),1);
for i = 1:size(a(:,1),1)
TF1 = A(i,1) == B(:,1) & A(i,2) = B(:,2);
TFtot = TF1 | TFtot;
end

C = B(TFtot,:);

我想创建一个更快的方法,因为这个循环目前大大减慢了算法。

最佳答案

你很接近。您只需交换 BA,然后使用此输出索引到 B:

L = ismember(B, A, 'rows');
C = B(L,:);

在这种特殊情况下,ismember 的工作原理是它输出一个 logical 向量,该向量的行数与 B 相同,其中 i B 中的 th 值告诉您我们是否在 A 中的某处找到了第 ith 行(逻辑 1) 或者如果我们没有找到这一行 (logical 0)。

您想从 B 中选择那些在 A 中看到的条目,因此您只需使用 ismember 的输出来切片进入 B 以提取受影响的行,并获取所有列。

我们得到 C:

>> C

C =

1 1
2 2
1 1

关于performance - 查找矩阵中多个值对的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31726578/

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