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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top