2016-11-11 2 views
0

Ich habe einen Vektor, sigma=[s1, s2, s3, s4, s5, s6, s7], die in einem Zyklus Laden aufgetragen ist.Drehen Identifikationspunkte in Zyklusbelastung

cycle load
Abb Zyklus Last

Ich habe Lösung paar Methoden gesehen Dieses Problem aber leider nicht für MATLAB noch.

Wie identifiziere ich Wendepunkte?
Wie identifiziere ich Nicht-Wendepunkte? (s2, s6)

+0

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

Antwort

1

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 
+0

Vielen Dank ein Kerl! Ist es richtig, dass jeder Ladevorgang mit einer Null beginnt? – jdoubleu

+0

Muss ich überprüfen, dass mein Array immer mit einer Null beginnt? Falls es nicht wegen der Imput-Form ist, muss ich am Anfang des Arrays eine Null hinzufügen, damit der Code funktioniert? – jdoubleu

+0

Wie wenn ich einen Vektor 'sigma = [0,0,1]' setze. sigma (1) ist kein Wendepunkt, aber sigma (2) – jdoubleu