我试图在矩阵中找到一个临界点。索引 (i,j) 处的值应大于或等于其行中的所有元素,并且小于或等于其列中的所有元素。
这是我拥有的(关闭但我很接近):
function C = critical(A)
[nrow ncol] = size(A);
C = [];
for i = 1:nrow
for j = 1:ncol
if (A(i,j) >= A(i,1:end)) && (A(i,j) <= A(1:end,j))
C = [C ; A(i,j)]
end
end
end
最佳答案
您可以使用逻辑索引。
minI = min(A,[],1);
maxI = max(A,[],2);
[row,col] = find(((A.'==maxI.').' & A==minI) ==1)
详情
请记住,Matlab 是专栏专业。因此,我们转置 A 和 maxI。
A = [
3 4 1 1 2
2 4 2 1 4
4 3 2 1 2
3 3 1 1 1
2 3 0 2 1];
A.'==maxI.'
ans =
0 0 1 1 0
1 1 0 1 1
0 0 0 0 0
0 0 0 0 0
0 1 0 0 0
然后做最少的
A==minI
ans =
0 0 0 1 0
1 0 0 1 0
0 1 0 1 0
0 1 0 1 1
1 1 1 0 1
然后将两者相乘
((A.'==maxI.').' & A==minI)
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 0 0 0
0 1 0 0 0
然后找到行和列
[row,col] = find(((A.'==maxI.').' & A==minI) ==1)
row =
4
5
col =
2
2
关于matlab - 寻找矩阵中的临界点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30471358/