Is there a better way to compute metrics on labeled array elements.
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Burke Rosen
am 17 Jun. 2018
Bearbeitet: Burke Rosen
am 18 Jun. 2018
For example, I have a 1d double array 'data' and a 1d cell array of strings called 'labels'. For each unique label I want the mean of the data. The best I have come up with is below. I don't believe this is fully vectorized. Is there a better way?
%%make sample dataset
n = 1000;
data = rand(n,1);
labels = char(randsample(97:122,n,true)');%[a-z]
%%get means for each label
[uniLab,~,labIdx] = unique(labels,'stable');% stable for speed
mu = arrayfun(@(x) mean(data(labIdx==x)),1:numel(uniLab));
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 17 Jun. 2018
2 Kommentare
Walter Roberson
am 17 Jun. 2018
The last step of your code can be replaced by
accumarray(labIdx, data, [], @mean)
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Cell Arrays 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!