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

Ausgabe vollständig unterdrücken

 

matlabgast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2010, 13:40     Titel: Ausgabe vollständig unterdrücken
  Antworten mit Zitat      
Ich lasse eine MATLAB-Schleife laufen, in der jeweils eine iterative Suche nach einem Minimum erfolgt. Bei jedem Schleifendurchlauf, teilt MATLAB im Command-Window mit, dass ein lok. Minimum gefunden wurde und unter welchen Voraussetzungen dies geschah.

Gibt es einen universellen Befehl in MATLAB, der jegliche Ausgabe im Command-Fenster unterdrückt?


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 29.09.2010, 19:50     Titel:
  Antworten mit Zitat      
Hallo,

gib doch mal freundlicherweise einen Ausschnitt aus deinem Code an, damit wir nachvollziehen können mit welchen Matlab Befehlen du die Minimas berechnest und vorallem wo die Ausgabe stattfindet.

Andernfalls wird dir wohl niemand helfen können, da wir leider noch keine Hellseher sind Smile.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.09.2010, 20:07     Titel: Re: Ausgabe vollständig unterdrücken
  Antworten mit Zitat      
Hallo matlabgast,

[qutoe]Ich lasse eine MATLAB-Schleife laufen, in der jeweils eine iterative Suche nach einem Minimum erfolgt. Bei jedem Schleifendurchlauf, teilt MATLAB im Command-Window mit, dass ein lok. Minimum gefunden wurde und unter welchen Voraussetzungen dies geschah.

Gibt es einen universellen Befehl in MATLAB, der jegliche Ausgabe im Command-Fenster unterdrückt?[/quote]
Hat der erste Absatz irgendetwas mit der Frage zu tun? Ich bin heute so leicht zu verwirren...

Schau Dir mal EVALC an. Das muss man mit Vorsicht geniessen, denn es unterdrückt ja die Ausgabe ins CommandWindow! Errors, warnings, Java-crash-Messages --- alles weg.
Besser ist es deshalb immer eine Funktion mit Ausgabe ins Command-Fenster mit einem Inputflag wie "verbose" leise schalten zu können, also nur dann ins Command-Window zu schreiben, wenn verbose==true.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 29.09.2010, 21:55     Titel:
  Antworten mit Zitat      
Hallo Jan,

könntest du das mit dem verbose (bzw. evalc) freunlicherweise mal an einem kleinen Beispiel veranschaulichen?

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.09.2010, 22:49     Titel:
  Antworten mit Zitat      
Hallo SCO,

gerne. Zuerstmal eine Funktion mit Ausgabe ins Command-Window:
Code:

function z = TheChattingCalculator(x, y)
z = x ./ y;
disp(z(1));
disp('This function is ready now.');
 


Mit EVALC:
Code:

x = rand(1, 10);
y = 4;
[Msg, z] = evalc('TheChattingCalculator(x, y)');
disp(Msg);
disp(z);
 

Das versteckt aber Warnungen. Und wenn der Calculator crashed, kann man die Warnungen auch im Nachhinein nicht mehr sehen. Immerhin geht dies zur Sicherheit:
Code:

x = rand(1, 10);
y = 4;
try
  [Msg, z] = evalc('TheChattingCalculator(x, y)');
  disp(Msg);
catch  % Now with enabled display:
  z = TheChattingCalculator(x, y);
end
disp(z);
 


Nun würde ich aber von vornherein Funktionen, die ich mal still und mal plappernd haben möchte, ein Flag anfügen:
Code:
function z = TheChattingCalculator(x, y, verboseStr)
if nargin < 3
  verbose = true;
else
  verbose = strcmpi(verboseStr, 'verbose');
end

z = x ./ y;

if verbose
  disp(z(1));
  disp('This function is ready now.');
end
 

Für eine Mini-Funktion ist das natürlich ein ziemlicher Overhead. Für eine größere Funktion ist das aber hilfreich.

Für ein großes Programm verwende ich ein andere Methode, bei der die Ausgabe über eine eigene Funktion erfolgt. In dieser Funktion kann man dann einen Kanal zum Command-Window und weitere Kanäle zu Files öffnen, so dass automatisch ein Log-file geschrieben werden kann.

Gruß, Jan
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 30.09.2010, 00:37     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für deine zügige und ausführliche Antwort. Deine Beispiele leuchten mir ein. Unter "verbose" hatte ich mir jedoch eine Art "Tag" vorgestellt, die jede function (max, find, mean.....) enthält und zugewiesen werden kann (Unterdrückung der Ausgabe ja/nein). Weil mir dies komplett neu war, fragte ich nach den Beispielen. Aber da hatte ich mich wohl ein wenig getäuscht Smile.

Trotzdem nochmals vielen Dank!

MFG

Sco
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.