2016-06-10 8 views
0

Wir theoretisch wissen, dassYaw Fehlerberechnung für eine Windturbine mit Matlab

Gierfehler = Windrichtung - Gondel Richtung

Nachdem ich Windrichtung und Gondel Richtung Datensätzen und somit berechnete Gierfehler über Formel haben . Ich habe den Absolutwert des Gierfehlers berechnet. Sobald ich die Gierfehlerwerte berechnet fand ich, dass diese Berechnung nicht korrekt ist, und daher muß ich mit dieser Formel ändere weiter

 Error = 360 - yaw error 

Also im Grunde habe ich einen für Look laufen, die meinen jeden Gierfehler zu überprüfen, werden Wenn Daten falsch sind, müssen sie durch Originaldaten ersetzt werden. Zum Beispiel, wenn meine Gierfehlerwerte 10,20,30,40,300 sind. es scheint, dass es eine falsche wegen Quadranten ändert sich mit 300-Wert ist daher wäre es mit Fehler ersetzen = 360-300 = 60. Ich einen Code für das unten geschrieben haben:

for i = 1:yaw error 

    if yaw_error > 180 

      error = 360 -yaw_error 

    else 

    end 

end 

yaw error = [yaw error error]; 

Können Sie mir helfen, wo ich bin falsch ?? Vielen Dank im Voraus :)

Antwort

1

Von dem, was ich aus Ihrer Frage verstehen

können sagen, x eine Matrix aus Gierfehlerwerte

x = [10 20 30 40 190 160 70 120 300 180 30] 

Sie die Indizes der Werte finden mehr als 180

z = find(x > 180) 
z = 

    5  9 

subtrahieren sie von 360

>> d =360 - x(z) 


d = 

    170 60 

und legen sie

in der Orignal-Matrix zurück
>> x(z) = d 

x = 


x = 

    10 20 30 40 170 160 70 120 60 180 30 

Einzeiler x(find(x > 180)) = 360 - x(find(x > 180)) oder x(x>180)=360-x(x>180)

+0

Sie den 'find' Befehl weglassen und nur' x (x> 180) = 360-x (x> 180) ' – Bernhard

+0

Danke, ich werde meine Antwort aktualisieren – Umar

1

Die one-liner von Umar wäre korrekt und elegant.

Für Ihr Verständnis, ich habe debuged ursprünglichen Code:

yaw_error = [ 10,20,30,40,300] 

for i = 1:numel(yaw_error) 
    if yaw_error(i) > 180 
     yaw_error(i) = 360 -yaw_error(i); 
    end 
end; 

yaw_error 
+0

Danke, das funktioniert gut :) –