检查两个数字是否在矩阵的同一行中

时间:2016-06-04 11:38:22

标签: matlab

我有一个像这样的矩阵:

1    2    6
1    6    5
2    3    7
2    7    6
3    4    8
3    8    7
5    6   10
5   10    9
6    7   11
6   11   10
7    8   12
7   12   11

我需要一个函数来检查两个数字是否在同一行。

例如,check(1,2)为true,而check(1,3)为false

我定义了以下功能

function f = checkTri(i,j,D)
E=D';
p=any(E==i);
f=0;
for k=1:length(p)
if (p(k)==1)==1
    if((any(E(:,k)==j)==1))
        f=1;
    end
end
end

它似乎工作但也许有一些更优雅的方式。有人可以看看这个吗?

2 个答案:

答案 0 :(得分:1)

您可以使用localhost:8080/restart==的组合在矩阵中找到具有特定值的行。然后检查所有行的两个值。

any

答案 1 :(得分:0)

假设D是你的矩阵,i是你的第一个元素,j是你的第二个元素,你可以按如下方式做到:(1)替换所有等于j的元素通过i和(2)在每一行上使用diff并查看某处是否有0。由于sort的工作原理,您首先需要diff。代码:

D(D==j) = i;
any(~all(diff(sort(matrix,2),1,2)))
如果ij在同一行,

将返回1,否则返回0。但是,Suever的解决方案更加优雅。