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

while condition until vector > x

 

windstaerke1313

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 15:00     Titel: while condition until vector > x
  Antworten mit Zitat      
Hallo zusammen,

ich probiere mich derzeit an eine while-Bedingung, in der ich die Differenz von 2 Vektoren V1 & V2 solange überprüfe, bis die Differenz einen Wert erreicht, der kleiner 0.05 ist.

Code:
%
while abs(V1 -V2) > 0.05
% hier kommt die neue Berechnung von V2
end
 


Dabei sind im Vektor V1 gemessene, fixe Werte.
Die Werte im Vektor V2 werden durch eine Funktion immer wieder neu berechnet.



Mein Problem liegt jetzt darin, dass die while -Bedingung bereits erfüllt ist, sobald ein Wert im Differenzvektor (V1-V2) kleiner 0.05 ist.
Ich will aber, dass diese Bedingung erst erfüllt ist, wenn alle Werte in diesem Differenzvektor den kleinsten Wert haben bzw. kleiner 0.05 sind.

Meine Idee war das ganze über .> zu lösen, aber dabei kommt es zu der Fehlermeldung, dass ein unerwarteter Matlab-Operator genutzt worden ist.

hat jemand von euch schon einmal so ein ähnliches Problem gehabt?
Beste Grüße und einen schönen Start ins Wochenende


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.435
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.02.2017, 15:04     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das richtig lese, widerspricht die Beschreibung ein wenig dem Code. Ich vermute aber, du möchtest das
Code:
while any(abs(V1 -V2) >= 0.05)


Alternativ das Maximum der Abweichungen testen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 15:54     Titel:
  Antworten mit Zitat      
Hi Harald, danke für den Tipp.
Tatsächlich any der Befehl den ich dafür brauche, nochmals dankesehr!

Allerdings bleibe ich jetzt in der while Schleife gefangen, da diese Bedingung nicht auf alle werte in dem Differenzvektor zutrifft.

Es wäre also super rückwirkend nach der kleinsten gemeinsamen Differenz (alle Differenzen im Vektor aufaddiert) zu schauen.
Hättest du dafür auch noch einen Tipp?

Vermutlich müsste man die Differenz in einem Vektor abspeichern und pro Schleifendurchgang einen neuen Vektor erstellen und dann nach der niedrigsten Summe pro Vektor schauen?!
Also so in etwa:

Code:
%
i=1;     % Index zum zählen

while any(abs(V1 -V2) >= 0.05)
A(:,i)=abs(V1 -V2)
% Hier kommt wieder die Berechnung von V2
i=i+1
end

for n=1:numel(A(1,end))
SUM(n) = sum(A(:,n));
Minimum=find(min(SUM))
end

 


Ist vermutlich etwas umständlich geschrieben.
Beste Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.435
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.02.2017, 16:11     Titel:
  Antworten mit Zitat      
Hallo,

ich kann dir nicht folgen.

Um Endlosschleifen zu vermeiden, kannst du einen Zähler verwenden und diesen überprüfen.
Code:
while any(abs(V1 -V2) >= 0.05) && i <= 100000


Grüße,
Harald
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.