-5

说,我有矩阵 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

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

或者

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

4

1 回答 1

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)
于 2013-01-26T14:06:54.187 回答