WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Abspeichern der besten Werte in Schleifen

 

Chrisch
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 09.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2008, 09:50     Titel: Abspeichern der besten Werte in Schleifen
  Antworten mit Zitat      
Hallo mal wieder !

Mein Projekt nähert sich dem Ende und momentan bekomme ich folgendes nicht hin :

Meine Eingangsdaten sind cells.
Daneben habe ich noch Referenzdaten, auch im Cell-Format.

Mit den Eingangsdaten springe ich in eine Schleife,
dort werden sie verändert und bekommen eine Bewertung.
Sie werden mit den Referenzdaten verglichen.

Sind die Eingangsdaten besser als die Referenzdaten, sind die Eingangsdaten die neuen Referenzdaten. Sind sie schlechter werden die alten Referenzdaten beibehalten. Das letzte ist eigentlich das Problem.
Ich poste ma n Codeschnipsel.




Code:

for re=1:N

Eingangsdate1{re}
Eingangsdaten2{re}

Referenzdaten1{re}
Referenzdaten2{re}

BewertungEingang1=x1;
BewertungEingang2=x2;

BewertungReferenz1=x3;
BewertungReferenz2=x4;


If x1>=x3
Referenzdaten1{re}=Eingangsdaten1{re}
end;

If x2>=x4
Referenzdaten2{re}=Eingangsdaten2{re}
end;

If x1<x3
 Referenzdaten1{re}= ?
end;

If x2<x4

Referenzdaten2{re}=  ?
end;

 



Mein 1. Problem ist also: die Schleifen 3 und 4. Wie speichere ich die letzte beste Veränderung der Eingangsdaten. Denn der letzte beste Wert soll festgehalten werden bis ein besserer kommt. Er soll nicht etwa mit jedem Durchlauf aktualisiert werden. Deshalb machts ja kein Sinn zu sagen :

Code:

If x1<x3
Referenzdaten1{re}=Referenzdaten1{re-1}
 



..also nimm einfach die Referenzdaten vom vorherigen oder vorvorherigen Durchlauf, da ja die letzten 10 Durchläufe ebenso schlecht oder irrelevante gewesen sein könnten.

Alles klar ? Wink




ich danke euch im Vorraus ..

mfg
Chris
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2008, 10:47     Titel:
  Antworten mit Zitat      
Hallo,

dein Code (und auch deine Beschreibung) ist leider etwas schwierig zu verstehen (für mich jedenfalls):

Im Code fehlt ein "end"!

Ich versuch es mal so zusammenzufassen wie ich es verstanden habe:

Du hast Referenzdaten und Eingangsdaten. Den Eingangsdaten weist du nun eine Bewertung zu (x1 und x2), die Referenzdaten besitzen auch eine Bewertung (x3 und x4). Nun läuft eine Schleife N-mal durch, und bei jedem Schleifendurchgang werden die Referenzdaten aktualisiert.
Falls die Bewertung der aktuellen Eingangsdaten besser (= größer) ausfällt, werden die Referenzdaten mit den Eingangsdaten überschrieben, ansonsten werden die alten Referenzdaten beibehalten.

Wenn es das ist, was du anstrebst, ist die Lösung doch einigermaßen einfach:

Code:
for re=1:N

  Eingangsdaten1{re}
  Eingangsdaten2{re}

  Referenzdaten1
  Referenzdaten2

  BewertungEingang1=x1;
  BewertungEingang2=x2;

  BewertungReferenz1=x3;
  BewertungReferenz2=x4;


  If x1>=x3
    Referenzdaten1=Eingangsdaten1{re};
  end;

  If x2>=x4
    Referenzdaten2=Eingangsdaten2{re};
  end;

end
Die Referenzdaten werden nur dann überschrieben, wenn sie schlechter sind als die Eingangsdaten, ansonsten bleiben die alten bestehen. Ich habe mal die Cell-Indizes bei den Referenzdaten weggelassen, weil die meiner Meinung nach überflüssig sind (ausser du willst dir den zeitlichen Verlauf ansehen). Ebenfalls würde ich die Cell-Indizes bei den Eingangsdaten weglassen, ich habe die aber mal nicht entfernt.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.