2009-06-12 16 views
4

Ok, hier ist etwas Code in MATLAB:Benutze ich histc falsch, oder ist das MATLAB schuld?

data = [1 1.5 2 3 4 4.5 5 6 7 7 7 0 0 0]; 

histc(data, [1:1:5]) 
histc(data, [1:1:5, inf]) 
histc(data, [-inf, 1:1:5]) 

die folgenden Ausgängen:

ans = 2  1  1  2  1 
ans = 2  1  1  2  5  0 
ans = 3  2  1  1  2  1 

Meine Frage ist, warum MATLAB eine nutzloses 0 zurück, wenn Sie inf in der Größe ist verwenden (Mittelwert> = 5 in diesem Fall)?

Wird es nicht immer Null sein? Die Hilfe sagt, dass die Ausgabe immer die gleiche Länge wie die Bin-Größe hat, aber ist das nicht eine schlechte Spezifikation in diesem Fall?

Antwort

7

Das ist eigentlich das korrekte Verhalten von HISTC. Wenn Sie die Syntax verwenden:

n = histc(x,edges); 

dann, aus der Dokumentation:

n (k) zählt den Wert x (i) wenn Kanten (k) < = x (i) < Kanten (k + 1). Der letzte Behälter zählt alle Werte von x, die Kanten (Ende) entsprechen.

Daher ist die letzte Kante Wert geben Sie gibt die Anzahl der, wie viele Dinge genau Spiel es. Wenn inf der letzte Kantenwert ist, zählt dieser Wert 0 (d. H. Es gibt keine inf s in den Daten). Wenn 5 der letzte Kantenwert ist, stimmt er genau mit 1 Wert in den Daten überein.