Accumulating Unique Set Values

3 views (last 30 days)
MByk
MByk on 20 Feb 2019
Edited: MByk on 20 Feb 2019
I have 10 sets (each set includes 1s and 0s: 1 means element selected) and trying to find the unique sets and store its element indices. But when there is only one unique set following code gives error. How can I fix it? Thanks for the help.
[Rw,Cl] = find(unique(FSet,'rows','stable'));
UnqFS = accumarray(Rw,Cl,[], @(f) {sort(f).'});
celldisp(UnqFS)
  2 Comments
Jos (10584)
Jos (10584) on 20 Feb 2019
What is Fset? A 10-by-N array?
Perhaps you can give a (small) example of the input and expected output?
MByk
MByk on 20 Feb 2019
Edited: MByk on 20 Feb 2019
Yes, it is 10 by N binary array. But i think i solved the problem like this.
[Rw,Cl] = find(unique(FSet,'rows','stable'));
if iscolumn(Rw)
UFS = accumarray(Rw,Cl,[], @(f) {sort(f).'});
celldisp(UFS)
end

Sign in to comment.

Accepted Answer

Jos (10584)
Jos (10584) on 20 Feb 2019
My suggestion: first find the unique rows of Fset, and then get the column indices for each row
FSet = randi(2,10,3) -1 % example
UFS = unique(FSet,'rows','stable')
UnqFS = arrayfun(@(r) find(UFS(r,:)), 1:size(UFS,1), 'un',0)
celldisp(UnqFS)

More Answers (0)

Categories

Find more on Data Import and Analysis 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!