2016-03-30 6 views
1

Ich berechnete eine Glättung auf ein Histogramm mit der Funktion zur Verfügung gestellt here. Von dem, was ich verstehe, ist der Punkt, der an Punkt 0.5 in dem Bild unten markiert ist, wo die Ableitung des Histogramms gleich Null ist, d. H. Der Punkt, an dem die Glättungskurve den Behälter beim Absenken schneidet. Wie kann ich diesen Punkt (durch Berechnung) automatisch oder numerisch berechnen, ohne das Histogramm zu visualisieren? enter image description hereWie berechne ich den Punkt in einem Histogramm, in dem die Ableitung Null ist?

+2

Das "Histogramm-Derivat" ist Null nahe '0,4'. Was in der Nähe von "0.5" passiert, ist, dass das Histogramm * selbst * zu Null wird. Großer Unterschied. –

+0

Danke @AndrasDeak. Gibt es eine Möglichkeit, den Punkt 0,5 aus meinen Daten zu berechnen, ohne das Histogramm zu visualisieren? – Tee

Antwort

1

Sie können alle Plotbefehle aus dem Beispiel entfernen. Was es läuft darauf hinaus, ist die folgende:

y = [randn(1,5001), randn(1,2001)+6]; 

[heights,centers] = hist(y); 
n = length(centers); 
w = centers(2)-centers(1); 
t = linspace(centers(1)-w/2,centers(end)+w/2,n+1); 

dt = diff(t); 
Fvals = cumsum([0,heights.*dt]); 
F = spline(t, [0, Fvals, 0]); 

DF = fnder(F); % computes its first derivative 

Nun, wie Sie tatsächlich Datenpunkte für DF bekommen? Wenn Sie die manual page for fnplt lesen, sehen Sie, dass die Zuweisung zu einer Variablen Datenpunkte und keine Grafik erzeugt.

pts = fnplt(DF); 

Nun prüfen wir gerade, wo Daten > 0 und wo der Vorzeichenwechsel sind:

pts(2, find(diff(pts(1,:) > 0) == -1) + 1) 

es sich auseinander nehmen lassen:

pts(1,:) > 0 

Erstellt eine logische Vektor mit 1, wo der Spline größer als 0 und 0 sonst.

diff(pts(1,:) > 0) 

Berechnet die Unterschiede zwischen aufeinanderfolgenden Elementen. Wenn sich pts(1,:) von 1 zu 0 ändert, ist dies -1. Mit find finden wir die Orte dieser Übergänge. Dies gibt uns die letzten Punkte, die der Spline noch positiv ist, bevor wir zu oder durch 0 gehen. Schließlich fügen wir 1 hinzu, um die Positionen des Splines nach dem Wechsel des Vorzeichens zu erhalten.

+0

Nicht sicher bin ich mit der letzten Zeile von Ihrer Erklärung klar und selbst wenn ich Ihre Lösung mit den gleichen Daten berechnen, die ich habe, gibt es nicht die gleiche Antwort wie das Visualisierungsergebnis, wie ich im Histogrammbild von meiner Frage markiert habe. – Tee