Accumulating Unique Set Values

2 Ansichten (letzte 30 Tage)
MByk
MByk am 20 Feb. 2019
Bearbeitet: MByk am 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 Kommentare
Jos (10584)
Jos (10584) am 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 am 20 Feb. 2019
Bearbeitet: MByk am 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jos (10584)
Jos (10584) am 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)

Weitere Antworten (0)

Kategorien

Mehr zu Data Import and Analysis finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by