matlab - 寻找矩阵中的临界点

标签 matlab function for-loop matrix indexing

我试图在矩阵中找到一个临界点。索引 (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/

相关文章:

matlab - 为什么通过以两种类似的方式向 fmincon 提供约束来获得不同的解决方案?

c++ - 将参数列表从函数移动到分配类 C++

c - 在 C 中扫描二维数组中的素数

python - 了解 Python if 语句中的任何关键字

performance - 使用int64而不是int32时,for循环性能要慢得多

MATLAB:使用八点算法进行 3d 重建

将邻接矩阵转换为距离或跳跃矩阵

c# - 如何在 C# Windows 应用程序中调用和运行 Matlab 脚本

接收字母、返回字母表中(从 0 开始)数字位置的 Python 函数

Java - 当用户按下按钮时暂停 for 循环并恢复迭代