我有一个像这样的矩阵:
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
它似乎工作但也许有一些更优雅的方式。有人可以看看这个吗?
答案 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)))
如果i
和j
在同一行,将返回1,否则返回0。但是,Suever的解决方案更加优雅。