Sortieren von Elementen in Bins in MATLAB
Frage
Wenn ich einen Satz von Daten Y und eine Reihe von Behältern auf X zentriert ist, kann ich den HIST Befehl zu finden verwenden, wie viele jedes Y in jedem Fach ist.
N = hist(Y,X)
Was würde Ich mag es, wissen, ob es eine eingebaute Funktion ist, die mir sagen kann, was ist jedes Y geht in, so
[N,I] = histMod(Y,X)
würde bedeuten, dass Y (I == 1) zurückkehren würde all Y in Bin 1, etc.
Ich weiß, wie diese Funktion zu schreiben, also ich nur fragen, ob es bereits eine eingebaute in in MATLAB, das dies tut.
Lösung
Die zugehörige Funktion histc
tut dies, aber es erfordert, dass Sie die Bin-Kanten anstelle von Bin-Zentren zu definieren.
Y = rand(1, 10);
edges = .1:.1:1;
[N, I] = histc(Y, edges);
Die Berechnung der Kanten der bincenters gegeben ist zu einfach. In einem Motto:
N = hist(Y, X);
wird
[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]);
mit Nc == N, plus einen zusätzlicher leerer Behälter am Ende (da ich keinen Wert in Y nehmen einstimmt inf).
Siehe doc histc
.
Andere Tipps
Wenn man zufrieden mit ist mit Kanten anstelle von Bins,
[N,bin] = histc(y,binedges)
funktioniert. Aaargh, Matlab Ihre Funktionsdefinitionen sind so nicht intuitiv