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

Daten vom Command-Window in GUI darstellen

 

christ.fabian
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2014, 19:39     Titel: Daten vom Command-Window in GUI darstellen
  Antworten mit Zitat      
Hallo,
ich bin leider nicht sehr erfahren mit Matlab und das Programmieren ist ohnehin Neuland für mich.
Ich habe die Aufgabe Daten (Ergebnisse), welche ich Command-Window in einem Skript errechnet habe übersichtlich darzustellen. Hierfür ist GUI eine Möglichkeit oder? Außerdem soll ich später noch Werte von anderen Textdateien darauf auflisten.
was für Befehle muss ich genau im m-File für den gui eingeben, damit bestimmte errechnete werte aus dem command-window übersichtlich dargestellt werden?

Vielen Dank!!!
lg
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 13.03.2014, 20:09     Titel: Re: Daten vom Command-Window in GUI darstellen
  Antworten mit Zitat      
christ.fabian hat Folgendes geschrieben:
Hallo,
ich bin leider nicht sehr erfahren mit Matlab und das Programmieren ist ohnehin Neuland für mich.
Ich habe die Aufgabe Daten (Ergebnisse), welche ich Command-Window in einem Skript errechnet habe übersichtlich darzustellen. Hierfür ist GUI eine Möglichkeit oder?

Imho, nein. Ergebnisse kann man mit diversen Plots und Diagrammen übersichtlich darstellen. Mit welchen genau hängt wiederum davon ab, was es für Ergebnisse sind, Datentyp etc.

Das GUI (Graphical User Interface) ist nur eine grafische Benutzeroberfläche die man für die Bedienung seiner Programme/scripte programmieren kann.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2014, 20:44     Titel:
  Antworten mit Zitat      
Okey vielen dank. Kann ich mithilfe gui nicht ein static text einfügen und diesen mit den ergebnissen eines befehls speisen?

Vielen dank
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 13.03.2014, 22:11     Titel:
  Antworten mit Zitat      
Man kann mit allem fast alles machen. Aber ich versteh deine Frage nicht.

Was ist dein Ergebnis und wie sieht es genau aus?
Wie soll eine Visualisierung der Ergebnisse aussiehen?
Was ist deine Eingabe und wie sieht die genau aus? (Dein "static text"?)
Wie soll das Ergebnis (die "speisung") aussiehen?
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2014, 22:00     Titel:
  Antworten mit Zitat      
Hallo,
Ich habe ein m file in verbindung mit simulink welches ich ausführen möchte.
Hierbei werden einige werte (zahlen) berechnet und ausgegeben und befinden sich dementsprechend in dem workspace bzw ein anderer teil wird in eine textdatei geschrieben.ich möchte nun diese ergebnisse (werte vom workspace und die werte aus der textdatei) übersichtlich auf einer oberfläche darstellen. Kann ich dies mit gui mithilfe eines statictext felds realisieren?
Vielen dank

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2014, 22:07     Titel:
  Antworten mit Zitat      
Hallo,
Ich habe ein m file in verbindung mit simulink welches ich ausführen möchte.
Hierbei werden einige werte (zahlen) berechnet und ausgegeben und befinden sich dementsprechend in dem workspace bzw ein anderer teil wird in eine textdatei geschrieben.ich möchte nun diese ergebnisse (werte vom workspace und die werte aus der textdatei) übersichtlich auf einer oberfläche darstellen. Kann ich dies mit gui mithilfe eines statictext felds realisieren?
Vielen dank

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2014, 14:25     Titel:
  Antworten mit Zitat      
Hey. Sorry für mein wirres gefrage:)
Ich versuch nochmal meine Problematik zum ausdruck zu bringen.
Ich habe ein SimulinkModell welches veschiedene Datensätze verarbeitet.
Ich habe nun die Aufgabe ein Auswetefenster mit den Ergebnissen zu erstellen. Ein teil der Ergebnisse wird jedoch in einer Textdatei (txt) ausgewertet auf welche ich keinen einfluss habe und auch nicht verändern kann.
Diese Texdatei sieht in etwa so aus


Ergebnisse der Simulation:
-----------------------------------------------
Strecke [km]: 5
Geschwindigkeit [km/h]: 10
beschleunigung [m/s^2]: 2

blabla [blabla] 6
blabla2 [blabla/blabla] 9



....usw. weiter unten kommen noch ein paar andere zahlen.
meine Frage ist nun wie ich gezielt den Wert für die Geschwindigkeit beispielsweie auslesen kann, um sie dann in der gui in einem static text-feld darstellen.
Mit welchem Suchbefehl kann ich also den Wert welcher hinter einem bestimmten Wort steht (z.b: Geschwindigkeit) auslesen?

Vielen DAnk für eure Hilfe
lg
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2014, 08:56     Titel:
  Antworten mit Zitat      
Code:
function read_file()
%Datei zu filename zum Lesen(read) öffnen
fid = fopen ('statistik.txt','r');
                    %check, ob fid gültig ist
%if(fid<0)
    %fprintf('Kann Datei %s nicht öffnen \n',statistik.txt);
    %return;         % im Fehlerfall Funktion sofort beenden
%end

                    %so lange weiter, bis Datei-Ende erreicht ist
weiter =1;          %Flag als Merker, ob Datei-Ende erreicht ist
while(weiter)       %nächste Zeiel einlesen
    tline=fget1(fid);
    if(tline==1)    %Datei-Ende erreiht, falls tline =-1 ist
        weiter=0;   %Flag zum Beenden setzen
    else
        %ansonsten Text auf dem Bildschirm ausgeben
        fprint('%s\n',tline)
    end
end
%Datei wieder schließen
fclose(fid);



Soweit bin ich jetzt. mir fehlt jedoch eine bedingung mit der ich einen Zahlenwert auslesen kann der nach einem bestimmten Wort in meiner txt datei kommt.

vielen dank


[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 18.03.2014, 09:15     Titel:
  Antworten mit Zitat      
Mit strcmp oder strfind kannst du nach bestimmten wörtern suchen.
Also zum Beispiel

Code:

if strfind(tline,'Strecke')
    strecke=str2double(cell2mat(regexp(str,'[0-9]+','match')));
end
 



Und hier deine while Schleife etwas eleganter

Code:

% hievor das fopen etc.
lines = 0;
while 1
    linestmp = fgetl(fid);
    if ~ischar(linestmp)
        break % Datei zuende!
    end

    % hier dann if strfind, ifelse strfind, ...

end

fclose(fid);
 

_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2014, 09:29     Titel:
  Antworten mit Zitat      
Code:
function read_file()                                        % Datei zu filename zum Lesen(read) öffnen
fid = fopen ('statistik.txt','r');
if(fid<0)
fprintf('Kann Datei %s nicht öffnen \n',statistik.txt);
return; % im Fehlerfall Funktion sofort beenden
end
                   
lines = 0;
while 1
    linestmp = fgetl(fid);
    if ~ischar(linestmp)
        break % Datei zuende!
    end
if strfind(tline,'')
    Strecke=str2double(cell2mat(regexp(str,'[0-9]+','match')));
    end
   
end

fclose(fid);



So sieht mein Befehl jetzt aus. Ich weiß leider nicht wo der Fehler liegt. Bzw. Ich verstehe deinen Vorschlag (if strfind(tline,'Strecke')
Strecke=str2double(cell2mat(regexp(str,'[0-9]+','match'))); ) nicht ganz. Könntest du mir den Befehl erklären? Was bedeuten 0-9?? und warum sagst du lines=1
Kann ich dann auch nach zwei Wörtern zuchen. Also ich will ja die Zahl auslesen welche sich in der gleichen linie befindet wie zb.: 'gefahrene Strecke'?

VIELEN Dank für deine Hilfe


[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 18.03.2014, 10:20     Titel:
  Antworten mit Zitat      
christ.fabian hat Folgendes geschrieben:

So sieht mein Befehl jetzt aus. Ich weiß leider nicht wo der Fehler liegt. Bzw. Ich verstehe deinen Vorschlag (if strfind(tline,'Strecke')
Strecke=str2double(cell2mat(regexp(str,'[0-9]+','match'))); ) nicht ganz. Könntest du mir den Befehl erklären? Was bedeuten 0-9??

0-9 bedeutet, alle Zahlen von 0 bist 9. Und das + dahinter ist für das mehrfache auftreten der Zahlen. Also dass auch 11 akzeptiert wird.

christ.fabian hat Folgendes geschrieben:

und warum sagst du lines=1

Ups, lines = 0 kannst du weglassen. Ist ein überbleibsel aus einer meiner Funktionen.


christ.fabian hat Folgendes geschrieben:

Kann ich dann auch nach zwei Wörtern zuchen.

Ja klar, kannst ja einfach if strfind(tline,'Strecke') && strfind(tline,'was anderes') machen.

christ.fabian hat Folgendes geschrieben:

Also ich will ja die Zahl auslesen welche sich in der gleichen linie befindet wie zb.: 'gefahrene Strecke'?

Das auslesen der Zahl macht ja Strecke=str2double(cell2mat(regexp(str,'[0-9]+','match')));
...sofern du da keine Kommarstellen hast.
Der Output von regexp ist eine Zelle, deswegen cell2mat, und anschließend muss der String noch in eine Zahl konvertiert werden, das macht str2double.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2014, 10:29     Titel:
  Antworten mit Zitat      
also wenn ich beispielsweise eine Textdatei (statistik.txt) habe in der in einer beliebeigen Zeile folgendes steht:
gefahrene Kilometer [km]: 100.55
kann ich dann folgende Funktion schreiben? Irgendwo habe ich noch einen Fehler.

Code:
function read_file()                                        
fid = fopen ('statistik.txt','r');

if(fid<0)
fprintf('Kann Datei %s nicht öffnen \n', statistik.txt);
return;
end
                   
while 1
    linestmp = fgetl(fid);
    if ~ischar(linestmp)
        break % Datei zuende!
    end
if strfind(tline,'gefahrene') %&& strfind(tline,'Strecke')
    [b]gesuchter_wert[/b]=str2double(cell2mat(regexp(str,'[0-9]+','match')));
    end    
end

fclose(fid);



[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 18.03.2014, 10:41     Titel:
  Antworten mit Zitat      
Uff, da sind jetzt viele copy&paste (drei unterschiedliche Variabelnamen die eigentlich den selben Namen tragen sollten) Fehler drin von uns beiden Smile


Code:

fid = fopen ('statistik.txt','r');
while 1
  tline = fgetl(fid);
  if ~ischar(tline)
    break % Datei zuende!
  end
  if strfind(tline,'gefahrene')
    gesuchter_wert=str2double(cell2mat(regexp(tline,'[0-9]+.[0-9]+','match')));
  end
end
fclose(fid)
 

_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2014, 10:52     Titel:
  Antworten mit Zitat      
Hey.
Das auslesen funktioniert wunderbar mit einem Wort.
Wenn ich aber die if bedingung mit && strfind(tline,'Gefälle') erweitere klappt es nicht.

Code:
fid = fopen ('statistik.txt','r');
while 1
  tline = fgetl(fid);
  if ~ischar(tline)
    break % Datei zuende!
  end
  if strfind(tline,'Kraftstoffverbrauch') [b]&& strfind(tline,'brutto')[/b]
    gesuchter_wert=str2double(cell2mat(regexp(tline,'[0-9]+.[0-9]+','match')));
  end
end
fclose(fid)


VIEEN vielen dank

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 18.03.2014, 11:16     Titel:
  Antworten mit Zitat      
Nimm nur ein & Zeichen. Funktioniert natürlich auch nur, sofern beide Wörter in der Zeile vorkommen.

Mit ein paar Trockenübungen solltest du es allerdings auch selber schaffen.

Code:

>> str='brutto Kraftstoffverbrauch'

str =

brutto Kraftstoffverbrauch

>> if strfind(str,'Kraftstoffverbrauch') & strfind(str,'brutto'), disp('klappt'), end
klappt
>> str='brutto was anderes'

str =

brutto was anderes

>> if strfind(str,'Kraftstoffverbrauch') & strfind(str,'brutto'), disp('klappt'), end
>>
 


Und "klappt nicht" ist keine Fehlermeldung bzw beschreibt dein Problem ungenügend.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

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.