Ich habe einen Datensatz, den ich zeichne. Das Ergebnis sieht wie folgt aus Bild: Detektieren der Krümmung eines Plots
Hier ist mein Python-Code:
import numpy as np
# Extra plotly bits
import plotly
import plotly.plotly as py
import plotly.graph_objs as go
a = np.array([[1, 0.00617329], [24, 0.133699], [48, 0.130072], [72, 0.0166202], [96, -0.187917], [120, -0.445023], [144, -0.698984],
[168, -0.942063], [192, -1.15151], [216, -1.30742], [240, -1.36852], [264, -1.33541], [288, -1.18194], [312, -0.982113],
[336, -0.772301], [360, -0.562501], [384, -0.3764], [408, -0.219537], [432, -0.106257], [456, -0.0369356], [480, -0.000313192]])
trace_a = go.Scatter(
x = a[:,0],
y = a[:,1],
mode = 'lines+markers',
name = 'a',
line = dict(
shape='line',
color = ('rgb(205, 12, 24)'),
width = 1)
)
data = [trace_a]
# Edit the layout
layout = dict(title = 'Curvature Test',
xaxis = dict(title = 'Data'),
yaxis = dict(title = 'Value'),
)
# Prepare Figure
fig = go.Figure(data=data, layout=layout)
# Plot
plotly.offline.plot(fig, filename='curvature.html')
Was ich ist das Hinzufügen einer zusätzliche Handlung zu erreichen versuchen, die die Krümmung der primären Handlung verfolgt.
, die wahrscheinlich wie das folgende Bild aussehen:
(Dies ist ein Prototyp und die gelben Markierungen sind nur zu zeigen, dass die zweite Darstellung, die die Krümmung des ersten repräsentiert.)
mit einer Punktproduktberechnung der vorherigen und nächsten Tangente für jede der DatenpunkteDa ich nicht in der Lage war, das Recht numpy/Mathematik Lösung, die ich dies in einer anderen Umgebung als Prototyp zu finden. Das ist also meine „Poor-Herrenanal-Curvature“ Lösung:
Wie kann ich einen zweiten Datensatz, der einmal aufgetragen wird, die Krümmung der primären darstellen?
Haftungsausschluss: Ich habe diese Frage schon einmal gestellt. Allerdings gelang es nicht, eine elegante Lösung zu trainieren. Ich habe auch das Thema Krümmung erforscht und bin mir der Krümmungsberechnungen bewusst. Aber ich kämpfe immer noch mit Python/Numpy und dem richtigen mathematischen Ansatz. Ich habe auch einige Zeit auf der folgenden post verbrachte, konnte aber nicht vollständig Port die Informationen zur Verfügung gestellt, um mein Problem zu lösen.
--- EDIT (1) ---
Hier ist das Ergebnis meiner Lösung:
eine Ableitung der Funktion zu nehmen und die Steigung einer Tangente herauszufinden, die das J (θ) in gegebener θ berührt und wenn die Steigung positiv ist Abnahme in der nächsten Iteration näher an den minimalen zu bewegen und den Zustand gesetzt, dass, wenn Neigung ist ein negativer Anstieg ein wenig, wenn es die Tangente berührt, ich denke, das ist, was Sie suchen? –