我想计算在矩阵的列上连续出现的零的第一个和最后一个索引

时间:2013-01-26 12:15:17

标签: matlab indexing zero

说,我的矩阵x为

  
    

x = [1 5 0 6 0; 2 6 0 3 0; 0 0 5 5 0; 0 0 0 8 9; 0 0 0 0 8];

  

因此

x =

 1     5     0     6     0
 2     6     0     3     0
 0     0     5     5     0
 0     0     0     8     9
 0     0     0     0     8

结果应该是 第一栏:(3,5) 第二栏:(3,5) 第3栏:(1,2)和(4,5) 第4栏:(5,5) 第5栏:(1,3)

OR

如果我只能在列中获得零的第一个和最后一个索引,那将会更好。 在这种情况下,结果应该是 第一栏:(3,5) 第二栏:(3,5) 第3栏:(1,5) 第4栏:(5,5) 第5栏:(1,3)。

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是将findaccumarray合并:

[r,c]=find(x==0)
%# identify the first and the last zero for each column
firstIdx = accumarray(c,r,[size(x,2),1],@(x)min(x),NaN)
lastIdx  = accumarray(c,r,[size(x,2),1],@(x)max(x),NaN)