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
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2014, 13:57     Titel:
  Antworten mit Zitat      
vielen dank für deine Hilfe.
Es funktioniert. aber leider nur wenn ich Wörter deren ersten Buchstaben großgeschrieben wird eingebe.
Woran kann das liegen?
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: 18.03.2014, 14:04     Titel:
  Antworten mit Zitat      
Naja, die Suche ist halt case-sensitiv. Es wird zwischen "Strecke" und "strecke" unterschieden. Also kannst du mit strfind(string, "Strecke") die "strecke" nicht finden. Mit
Code:

if (strfind(string,"Strecke")||strfind(string,"strecke"))
 

kannst du beides Abdecken.
_________________

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, 14:42     Titel:
  Antworten mit Zitat      
Hey, nochmal vielen dank für deine hilfe.

mein Problem ist,dass es machmal nciht funktioniert bzw. ich zu blöd bin:)
wenn ich zum beispiel folgede Zeien habe

Anzahl der ausgeführten Schaltungen : 1
Anzahl der Schaltungen pro km : 0.048

dann bekomme ich den Wert 1 indem ich 'Anzahl' und 'Schaltungen' als suchkriterium eingebe.
die 0.048 bekomme ich nicht hin. da wird mir ein falscher WErt angezeigt.

Wie kann cih bei solchen fällen die Zeile eindeutig identifizieren?

lg 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, 14:45     Titel:
  Antworten mit Zitat      
Such doch einfach nach
strfind(string, "Anzahl der ausgeführten Schaltungen"), dann hast du es eindeutiger
_________________

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: 19.03.2014, 08:07     Titel:
  Antworten mit Zitat      
Hey,
leider funktioniert die Funktion bei manchen Wörtern nicht.
zb:Anzahl der ausgeführten Schaltungen, spezifischer Kraftstoffverbrauch netto... solche linien findet er nicht.
Woran könnte das liegen?
als ergebniss bekomme ich 1,0051e+04 anstatt der richtigen zahl in der Linie
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: 19.03.2014, 08:34     Titel:
  Antworten mit Zitat      
Na, also findet er es doch, die geparste Zahl durch regexp entspricht nur nicht deinen Erwartungen. Wie sieht denn die komplette Zeile aus?
_________________

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: 19.03.2014, 09:10     Titel:
  Antworten mit Zitat      
Anzahl der ausgeführten Schaltungen : 3
Kraftstoffverbrauch brutto [l]: 0.1
Kraftstoffverbrauch netto [l]: 0.1
spezifischer Kraftstoffverbrauch brutto [l/100km]: 195.3
spezifischer Kraftstoffverbrauch netto [l/100km]: 194.8

Diese Zeilen lassen sich nciht auslesen
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: 19.03.2014, 09:25     Titel:
  Antworten mit Zitat      
Ja, der regexp Befehl parsed jede Zahl, und du hast zwei in deinem String.

Code:

str2double(cell2mat(regexp(tline,'[: ]([0-9]+.[0-9]+){1}','match')))
 


Das orientiert sich jetzt an dem Doppelpunkt, wenn also in einer Zeile mal kein Doppelpunkt sein sollte, fliegst du damit wieder auf die Nase.
Folglich ist es besser einfach die komplette .txt Datei hochzuladen, deinen kompletten Ansatz zu zeigen, und zu beschreiben was du für Werte daraus haben möchtest.
_________________

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: 19.03.2014, 09:38     Titel:
  Antworten mit Zitat      
ah okey. ich hab dir mal ein pn geschickt

kann es auch an dem ü liegen?

er liest jetzt NaN aus.
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: 19.03.2014, 10:09     Titel:
  Antworten mit Zitat      
Nein, die 3 ist keine Dezimalzahl.

Code:
str2double(cell2mat(regexp(tline,'[: ]([0-9]+.[0-9]+|[0-9]+)','match')))


Das | steht für oder.

Code:

[: ](DEZIMALZAHL | OHNE NACHKOMMARZAHL)
[:]([0-9]+.[0-9]+ | [0-9]+)
 


Wenn du nicht anfängst über die Befehle nach zu denken (und die Matlab Dokumentation dazu zu lesen), die du nach dem Gutenberg Verfahren in deinen Code einsetzt, wird dieser Thread niemals enden Wink
Und von der PN profitiert hier niemand (auch im Hinblick auf bessere Lösungsvorschläge).
_________________

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: 21.03.2014, 15:26     Titel:
  Antworten mit Zitat      
hey. ich bins nochmal. Ich bin noch auf ein anderes Problem gestoßen. Ich möchte in einer textdatei einen bestimmten Teil einer Zeile auslesen.
Die Zeile lautet :
Strecke [2] Strecke_blabla_85km-h.str

Die Zeile identifiziere ich mit folgender Funktion:

Code:
fid = fopen (text.txt,'r');
while 1
  tline = fgetl(fid);
  if ~ischar(tline)
    break % Datei zuende!
  end
  if strfind(tline,'Strecke') & strfind(tline,'[2]')
    routenname=(tline)
  end
end
fclose(fid)



Das Ergebnis lautet:
routenname= Strecke [2] Strecke_blabla_85km-h.str

gibt es nun eine möglichkeit nur "Strecke_blabla_85km-h.str" auszulesen?
also nach [2] die linie auslesen?

g und vielen dank
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: 19.05.2014, 09:25     Titel:
  Antworten mit Zitat      
Hey, das auslesen klappt wunderbar.
jetzt steh ich jedoch vor der Aufgabe einen ganzen Vektor aus der Statisitk-Datei auszulesen.
Der Teil der txt Datei sieht folgendermaßen aus.

.
.
.
Zeitfahranteile in sec im Momenten-Drehzahl-Kennfeld

Motordrehzahl Motormoment
in U/min bis in Nm bis
n_Mot -400.0 -200.0 0.0 200.0 400.0 600.0 800.0 1000.0 1200.0 1400.0 1600.0 1800.0 2000.0 2200.0 2400.0 >
600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
800.0 0.0 0.0 0.0 0.0 0.1 0.6 0.5 0.4 0.3 0.1 0.0 0.0 0.0 0.0 0.0 0.0
1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.0 0.0 0.0 0.0 0.0
1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.0 0.0 0.0 0.0
1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.0 0.0 0.0 0.0 0.0
1600.0 0.0 0.0 0.0 0.0 0.0 0.4 15.8 19.0 2.0 1.4 1.2 1.1 1.0 3.8 0.9 0.0
1800.0 0.0 0.0 1.5 0.5 0.4 0.0 0.0 1.3 1.4 1.0 0.8 0.9 8.4 3.3 0.0 0.0
2000.0 0.0 1.4 1.5 0.1 0.3 0.4 0.5 1.2 0.8 0.7 0.9 4.2 3.4 0.0 0.0 0.0
2200.0 0.0 0.0 0.5 0.6 0.2 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
> 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Summe 0.0 1.5 3.5 1.2 1.0 1.6 16.9 21.8 4.5 3.3 3.3 6.4 12.7 7.1 0.9 0.0
.
.
.

Zur Lokalisierung würde ich die Zeile 'Zeitfahranteile in sec im Momenten-Drehzahl-Kennfeld'auslesen.
Welchen Befehl brauche ich, um den nach dieser Zeile kommenden Vektor auszulesen?

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2014, 20:45     Titel:
  Antworten mit Zitat      
Hallo,

nach dieser Zeile kommt Text und dann kommt eine Tabelle/Matrix - was genau meinst du also mit dem Vektor?

Ist die Anzahl der Zeilen, die zwischen der Zeitfahranteile-Zeile und den numerischen Daten ist, immer gleich oder kann die variieren?

Dateien bitte generell anhängen, damit es nicht eventuell zu Verwirrungen durch hier zusätzliche Zeilenumbrüche kommt.

Grüße,
Harald
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: 21.05.2014, 07:08     Titel:
  Antworten mit Zitat      
Hallo,

mit dem Vektor meine ich die Matrix oder Tabelle. Die darauf folgenden Zahlen also.
Diese würde ich gerne auslesen und in Form einer Matrix einlesen.

Die Anzahl der Zeilen zwischen der Zeile und den numerischen Daten müsste immer gleich sein.

Viele Grüße,
Fabian

Beispiel.txt
 Beschreibung:
auszulesende txt-Datei

Download
 Dateiname:  Beispiel.txt
 Dateigröße:  1.91 KB
 Heruntergeladen:  353 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.05.2014, 14:30     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit:
Code:

fid = fopen ('Beispiel.txt','r');
while 1
  tline = fgetl(fid);
  if ~ischar(tline)
    break % Datei zuende!
  end
  if strfind(tline,'Zeitfahranteile')
    for I=1:3
        fgetl(fid); % 3 Zeilen überspringen
    end
    data = cell2mat(textscan(fid, repmat('%f', 1, 17), 'TreatAsEmpty', {'n_Mot', '>', '<', 'Summe'}));
  end
end
fclose(fid);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  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.