Frage

Ok, hier ist ein Code in Matlab:

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])

das gibt Folgendes aus:

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 nutzlose 0 zurückgibt, wenn Sie Inf in der Behältergröße verwenden (um in diesem Fall> = 5 zu bedeuten)?

Wird es nicht immer Null sein? Die Hilfe besagt, dass die Ausgabe immer die gleiche Länge wie die Behältergröße sein wird, aber ist das in diesem Fall nicht eine schlechte Spezifikation?

War es hilfreich?

Lösung

Das ist eigentlich das richtige 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 die Kanten übereinstimmen (Ende).

Daher gibt der letzte Randwert, den Sie geben, die Anzahl der Anzahl der Dinge zurück exakt Pass Es an. Wann Inf ist der letzte Kantenwert, der 0 zählt (dh es gibt keine Infs in den Daten). Wenn 5 der letzte Kantenwert ist, stimmt er genau den 1 -Wert in den Daten überein.

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