在MATLAB中找到矩阵中每列有非零元素的行中的最低位置

Bow*_*cho 2 matlab matrix

例如,我有一个4x6矩阵A:

A =

     0     0     0     0     4     3
     0     2     1     0     0     0
     0     5     0     8     7     0
     8     9    10     3     0     2
Run Code Online (Sandbox Code Playgroud)

我想找到A行中的最低位置,其中为每列找到非零元素.它应该是这样的:

column 1 => row 4
column 2 => row 2 
column 3 => row 2
column 4 => row 3
column 5 => row 1
column 6 => row 1  
Run Code Online (Sandbox Code Playgroud)

结果应该类似于以下向量:

Result = [4, 2, 2, 3, 1, 1] 
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何获得这个?

Div*_*kar 5

解决一般案例的一种方法 -

[valid,idx] = max(A~=0,[],1)
out = idx.*valid
Run Code Online (Sandbox Code Playgroud)

样品运行 -

A =
     0     0     0     0    -4     3
     0     2     1     0     0     0
     0     5     0     8     7     0
     0     9    10     3     1     2
out =
     0     2     2     3     1     1
Run Code Online (Sandbox Code Playgroud)
  • 从示例运行中可以看出,对于存在全零(column-1)的情况,我们得到输出zero以指示该列中没有非零.

  • 它还负责负数(第5列).