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

Ausdrucke innerhalb einer unbekannten Funktion unterdrücken

 

E5
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 10:53     Titel: Ausdrucke innerhalb einer unbekannten Funktion unterdrücken
  Antworten mit Zitat      
Gute Tag. In meinem Hauptprogramm rufe ich eine mex-Funktion auf, die ich leider nicht einsehen und deshalb auch nicht abändern kann. Innerhalb dieser Funktion werden in jedem Iterationsschritt dutzende von Zeilen ausgegeben (natürlich auch wenn man den Aufruf der Funktion per ";" ode eval(...) unterdrückt. Ich bräcuhte also quasi eine Möglichkeit die Ausgabe im Fenster komplett zu unterdrücken, also eine Art Befehl displayoff und display on, damit das ganze ungefähr so aussieht:

Code:
function [ausgabe1,...,ausgabeN]=Hauptfunktion(input1,...,outputK)

%Berechnungen

displayoff

A=MexFunktion(...); %Funktionsausruf der ausgabenerzeugendenfunktion

displayon
 


Wenn ich nun im Ausgabe/command-Window die Hauptfunktion mittels
Code:
[ausgabe1,...,ausgabeN]=Hauptfunktion(input1,...,outputK);
soll keine Ausgabe zu sehen sein.

Hoffe ich konnte erklären, was ich genau meine.

Gruß E5
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 04.11.2013, 11:18     Titel:
  Antworten mit Zitat      
Die Ausgabe erfolgt ja innerhalb der MexFunction - somit müsstest du dort etwas einstellen, wenn du die Ausgabe unterdrück willst.

Und das geht am sinnvollsten, indem du in die Funktion gehst und entweder die fehlenden Semikolons einfügst, oder disp-Zeilen auskommentierst.
Wobei ich mich frage, warum du die MexFunction "nicht siehst". Kannst du das bitte mal näher erläutern? (Funktionname markieren und strg + d drücken sollte jede Funktion im Quelltext öffnen -> veränderbar).

Alternativ, wenn du die Funktion absolut nicht ändern "darfst", könntest du nach dem Aufruf der Funktion ein clc setzen, womit du das command window leerst.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
E5
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 11:43     Titel:
  Antworten mit Zitat      
Hallo Martina,

also die MexDatei ist der QP-Solver von Mosek (keine Ahnung ob das bekannt ist) für die eine Lizenz nötig ist (die ich habe Razz ). Die MexDatei die nach dem compilieren entsteht ist (zumindest nach allen möglichen probieren) nicht einsehbar und das soll sie glaube ich nciht sein. Ich will darin auch nichts verändern - wie du schon geschrieben hast, darf ich das auhc quasi nicht. Ich will lediglich die Ausgabe unterdrücken. Der Tip mit clc ist nicht schlecht, allerdings brauche ich doch einige anderen Ausgabe, die mit diesem Befehl dann leider auch weg wären. Gibt es eventl eine möglcihkeit den clc Befehl nur bis zu einer gewissen Stelle auszuführen, den Rest stehen zu lassen und ndacha weiter auszugeben?!

Gruß E5
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.11.2013, 13:18     Titel:
  Antworten mit Zitat      
Hallo

Wenn der Entwickler dieser Funktion keine solche Option vorgesehen hat dann kann Matlab die Ausgabe nicht unterbinden.
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 04.11.2013, 13:58     Titel:
  Antworten mit Zitat      
Hallo E5,

ich habe dafür auch keine Lösung, aber wie wäre es, wenn du Mosek kontaktierst, wenn ihr schon Lizenzgebühren und "Wartungskosten" bezahlt?

Grüße
Chris
_________________

--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
E5
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 14:30     Titel:
  Antworten mit Zitat      
hey nochmal,

erstmal danke für die Antworten. Falls mich die Massen an Ausgaben noch mehr stören sollten, werde ich wahrscheinlich wirklich nicht drum herum kommen, mal mosek anzuschreiben.

Ich hab irgendwo noch etwas davon gelesen, dass man einzelne Zeilen aus dem Command-Window löschen kann, allerdings keinen Code dafür finden können, wäre noch meine einzige Idee (falls jmd weiß wie das geht), wie man im nachhinein einfach die letzten Zeilen löscht, wenn man zählen kann, wie viele das wären (ist bei mir leider variabel)

Gruß E%
Private Nachricht senden Benutzer-Profile anzeigen
 
E5
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 15:00     Titel:
  Antworten mit Zitat      
Mit der Funktion

Code:
function deletetlastk(k)
for i=1:k
   fprintf('\b%d')
end
 


kann man die letzten k zeichen im Command-Window löschen (wobei man die Zeichen für den Befehl 'deletelastk(10)' mitzählen müsste, wenn man die Funktion direkt im command-Window aufruft. Allerdings ist es für mich gerade nicht möglich vorher zu zählen, wie viele Zeichne ausgegeben werden ... hmmm ... einer noch ne letzte Idee dafür ?!?!

schon mal Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
E5
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 16:13     Titel:
  Antworten mit Zitat      
Falls es jmd interessiert, ich hab nach ewigen rumprobieren und suchen jetzt eine zwar umständliche, aber schnelle und komplette Lsg gefunden...

die Funktion diary('filename') speichert in einer txt-Datei alles ab dem Befehl bis zur wiederholten Eingabe von diary('filename'). Man bekommt dann mit
Code:

function [...]=Hauptfunktion(...)

% Berechnungen
diary('filename')
A=MexFunktion(...) % Ausgabeerzeugende Mex-Funktion
diary('filename')
fid=fopen('filename'); % text datei filename laden
a = char(fread(fid,inf)).'; % Alle Zeichen von filename in Vektor speichern
k=length(a) % Anzahl aller Zeichen in filename
for i=1:k  % die letzten k Zeichen in Ausgabe loeschen

            fprintf('\b%d')
end

delete('filename') % Datei kann wieder geloescht werden.

end function

 


das gewünschte Ergebnis.
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2013, 09:13     Titel:
  Antworten mit Zitat      
Wieso verwendest du nicht evalc?

Code:

[T A] = evalc('MexFunction(...)');
 


viele Grüße
Thomas
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.