i want to find row indices for each column having non zero values

3 views (last 30 days)
i have a matrix a=[1 1 0 1;1 1 0 0;0 0 1 1] i want row indices for each column having non zero elements as [1,2] [1,2] [3] [1,3]

Accepted Answer

Stephen23
Stephen23 on 25 Mar 2016
Edited: Stephen23 on 25 Mar 2016
An easy way using accumarray:
>> a = [1,1,0,1;1,1,0,0;0,0,1,1]
a =
1 1 0 1
1 1 0 0
0 0 1 1
>> [row,col] = find(a);
>> C = accumarray(col,row,[],@(r){r});
>> C{:}
ans =
1
2
ans =
1
2
ans =
3
ans =
1
3

More Answers (1)

Jos (10584)
Jos (10584) on 25 Mar 2016
A = [1 1 0 1; 1 1 0 0; 0 0 1 1]
C = arrayfun(@(k) find(A(:,k)),1:size(A,2),'un',0)
% C{x} holds the row numbers for which A(:,x) is non-zero

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!