Ich nehme einige Sigma-Werte an, die ähnlich denen aussehen werden, die Sie gezeichnet haben. Beachten Sie die zusätzliche Null am Anfang, das nicht in Ihrem Grundstück markiert aber vom Grundstück sieht es aus wie es ein Datenpunkt ist:
>> sigma = [0 3 -1 -3 1 -2 0.5 3.5]
>> sign(diff(sigma))
ans =
1 -1 -1 1 -1 1 1
Das sagt mir, wo sigma
zunimmt und wo es abnimmt, wenn wir nehmen Sie ein diff einmal mehr, wo der diff-Wert wird Null nicht Wendepunkte und nicht Null sein wird, Punkte
>> diff(sign(diff(sigma)))
ans =
-2 0 2 -2 2 0
das erste Element entspricht den ersten Punkt in Ihrem Grundstück (nicht der erste Wert von Sigma würde Drehen in mein Array). -ve Werte zeigen konkav und + ve zeigen konvexe Wendepunkte an. Beachten Sie, dass dieses Ergebnis nur sechs Elemente für sieben Punkte hat, weil der siebte Punkt unbestimmt ist.
>>turning = find(diff(sign(diff(sigma))))
>>nonTurningIdx = find(diff(sign(diff(sigma))) == 0)
turning =
1 3 4 5
nonTurningIdx =
2 6
Ok, so mein Zyklus Laden wird jetzt verwandelt, und ich werde immer einen Vektor mit der folgenden Art erhalten: 'sigma = [0,0,0, k, -k, k, 0, k, -k ] '. Wie Sie sehen können, hat es nur Nullen und denselben Parameter positiv und negativ. Gibt es einen neuen Weg, um Wendepunkte zu definieren? – jdoubleu