说,我的矩阵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)。
答案 0 :(得分:2)
实现此目的的一种方法是将find
与accumarray
合并:
[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)