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

Auf "Warning" reagieren

 

Antonios
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2012, 15:24     Titel: Auf "Warning" reagieren
  Antworten mit Zitat      
Hallo,
ich bekomme beim lösen von nichtlinearen Gleichungssystemen die Warnung
"Warning: The solutions are parametrized by the symbols: k = Z_".

Jetzt möchte ich im selben Moment in welchem die Warnung angezeigt wird, darauf reagieren können.
In Pseudocode:
Code:

if  (warning occurs) == 1
    do
else
    do
end
 

Wie kann ich dieses if umsetzten?
Gruß
Private Nachricht senden Benutzer-Profile anzeigen


HerrErnie
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 21.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2012, 18:16     Titel:
  Antworten mit Zitat      
Hallo,

Hoffe, ich habe das Problem richtig verstanden. Dann könnte folgender Beispielcode vielleicht helfen.

Alles was im catch-Block steht wird ausgeführt, wenn irgendwo im try-Abschnitt eine Warnung (oder ein Fehler) auftritt. Die Variable 'lastwarn' enthält den Text der letzten Warnung. Habe des weiteren irgendwo gelesen, dass man mit neueren MATLAB-Versionen auch ohne den Umweg über die manuelle Fehlererzeugung direkt Warnungen abfangen kann, dazu weiß ich jedoch nichts genaues.

Code:

for i=1:100    
    try
        b=round(rand(1))
        if b
            A=zeros(5);
        else
            A=eye(5);
        end
        inv(A);  %Einfach ein Beispiel für eine Aktion, die eine Warnung erzeugen kann.
        error(lastwarn);  %Notwendig, da durch try-catch nur Fehler abgefangen werden und keine Warnungen.
    catch
        lastwarn('');
        disp(['Es trat eine Warnung in Iteration ',num2str(i), ' auf']);
    end
end

 


Dazu müsste man jedoch ziemlich genau wissen, an welcher Stelle im Code die Warnung auftauchen könnte. Schwieriger wird es, wenn an dieser Stelle mehrere verschiedene Warnungen möglich sind und je nach Art der Warnung eine andere Aktion ausgeführt werden soll. Aber auch dann könnte ich mir Lösungen per String-Vergleich oder Warnungs-ID vorstellen.


Edit: Stelle gerade fest, dass das ganze doch nicht ganz so funktioniert, wie ich mir das dachte. Ich denk nochmal darüber nach...

Edit 2: Hab den Code jetzt so angepasst, dass er wirklich das tut, was ich dachte. Jetzt wird tatsächlich in etwa 50% der Schleifendurchläufe eine Warnung erzeugt. Wichtig ist insbesondere, dass der Inhalt von lastwarn per lastwarn('') gelöscht wird, nachdem gerade eine Warnung auftrat.
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2012, 21:09     Titel:
  Antworten mit Zitat      
Vielen Dank!
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 - 2025 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.