-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];

したがって

×=

 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

これを行う 1 つの方法は、次のように組み合わせること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 に答える