gpt4 book ai didi

matlab - 查找一组值在矩阵中的位置

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:29 26 4
gpt4 key购买 nike

我有两个值(k 和 j),我知道它们在 nx3 矩阵 (M) 中。我知道它们在同一行并且 j 总是在 k 的右边,所以如果 k 在 M(2,1) 中,那么 j 将在 M(2,2) 中。我之前在函数中对此进行了测试,但现在我想知道给定的 k 和 j 对应的是哪一行。我需要他们所在位置的行号才能继续。矩阵中没有重复的k和j组合。

所以如果我有矩阵

M=

1 4 5
1 5 7
k j 5
4 5 6
2 3 1

然后我想知道它们在第 3 行。没有一列是有序的。

我尝试过的:

我使用了下面的代码

[row,~] = find(M==k);

我不确定如何寻找它们的组合。我想避免使用查找功能。我希望潜在地使用逻辑索引。

我该怎么做呢?我希望这个问题是有道理的。

最佳答案

您可以使用 bsxfun -

find(all(bsxfun(@eq,A(:,1:2),[k,j]),2) | all(bsxfun(@eq,A(:,2:3),[k,j]),2))

根据此post on benchmarked results,作为与bsxfun 的关系操作,这应该非常有效。

样本运行

案例#1:

A =
1 4 5
1 5 7
6 7 1
4 5 6
2 3 1
k =
6
j =
7
>> find(all(bsxfun(@eq,A(:,1:2),[k,j]),2) | all(bsxfun(@eq,A(:,2:3),[k,j]),2))
ans =
3

案例#2:

A =
1 4 5
1 5 7
1 6 7
4 5 6
2 3 1
k =
6
j =
7
>> find(all(bsxfun(@eq,A(:,1:2),[k,j]),2) | all(bsxfun(@eq,A(:,2:3),[k,j]),2))
ans =
3

关于matlab - 查找一组值在矩阵中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38915587/

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