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

Werte aus txt Plotten

 

Aaron12
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 16:37     Titel: Werte aus txt Plotten
  Antworten mit Zitat      
Hallo zusammen

Und zwar würde ich gerne Daten, die Zeilenweise in einer Text Datei gespeichert sind plotten.
Unter diesen Daten habe ich noch einen Zählstand gespeichert, der nicht geplottet werden soll, diesen würde ich mir aber gerne separat ausgeben lassen.
Die Text Datei sieht ungefähr so aus:

X X X
X X X
Zähler : a
X X X
…. Und so weiter
Lässt sich so etwas mit Matlab umsetzen? Und wenn ja wie?
Viele Grüße.
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.04.2016, 16:55     Titel:
  Antworten mit Zitat      
Zitat:
Lässt sich so etwas mit Matlab umsetzen?
ja
Zitat:
Und wenn ja wie?

was hast du denn bis jetzt versucht? zum thema text dateien einlesen gibt es ja schon unzälige beiträge im internet und auch hier im forum. es ist ja sinnfrei das alles nochmal zu erklären.
wenn du dann ansätze hast bei denen es zu problemen kommt kannst du dann ja konkrete fragen stellen. sihe dazu den thread aus meiner signatur.
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
gandy
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 31.03.16
Wohnort: nähe Münnchen
Version: R2019 b
     Beitrag Verfasst am: 21.04.2016, 17:35     Titel:
  Antworten mit Zitat      
Hey Aaron12,

versuch es mit Import Data.
Damit kannst du deine gewünschten Werte auswählen und per "generate function" eine Funktion kreieren lassen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Aaron12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 17:49     Titel:
  Antworten mit Zitat      
Ist sowas auch in Echzeit möglich? Die Daten werden dabei in der txt Datei ständig aktualisiert.
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: 22.04.2016, 09:36     Titel:
  Antworten mit Zitat      
Hallo Aaron12

Was bedeutet in Deinem Fall genau "Echtzeit"? Eine kKommunikation über das File-System wird niemals in Echtzeit möglich sein, da sowohl die Platte, als auch das Betriebssystem und die Anwendung selbst die Daten zwischenspeichern, bevor sie wirklich auf die Festplatte geschrieben werden. Das geschieht oft in Blöcken zu 1kB, so dass "Echtzeit" hier wirklich vage ist. Zudem ist dabei nicht gewährleistet, dass die Zeilen vollständig geschrieben werden. Deshalb ist das Auslesen von Files, in denen noch anderweitig geschrieben wird, grundsätzlich eine schlechte Idee. Lässt sich das vermeiden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Aaron12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2016, 09:38     Titel:
  Antworten mit Zitat      
Also ich bekomme es jetzt soweit hin, dass ich die Daten einlesen, speichern und ausgeben kann. Leider schaffe ich es noch nicht bestimmte Zeilen, die nicht mit in die Grafik sollen raus zu filtern und in einer eigenen Variablen zu speichern.

Wenn ich mir diese separat raussuche, würde es funktionieren, allerdings ist dies bei ein paar tausend Zeilen zu umständlich.

Im Internet hatte ich gelesen, dass man so etwas mit einer if Anweisung realisieren könnte, allerdings hatte ich damit noch keinen Erfolg.

Grüße

@Jan: Eine leichte Verzögerung ist nicht so dramatisch. Würde das gante trotzdem gerne so machen.
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: 22.04.2016, 09:59     Titel:
  Antworten mit Zitat      
Hallo Aaron12,

Dann brauchst Du eine Methode, die aucgh damit umgehen kann, dass eventuell in der letzten Zeile nur "X X" steht und das letzte "X" erst später hinzugefügt wird. Das ist nicht trivial.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Aaron12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2016, 10:40     Titel:
  Antworten mit Zitat      
Dann lass ich das für's erste lieber Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Aaron12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2016, 15:02     Titel:
  Antworten mit Zitat      
Soweit bin ich jetzt gekommen:

Code:
fid = fopen('Data6.txt');
data = {};
data2 = {};
while ~feof(fid)
    l = fgetl(fid);
    if strcmpi(l(1),'A')
        data = [data, textscan(l, '%s;%f')];
    else
        data2 = [data2, textscan(l, '%f;%f;%f')];
    end
end


Ich möchte alle Zeilen, die mit einem A beginnen in data speichern und alle anderen in data2.
Mein txt Dokument hat folgendes Format:
1;23;4
2;21;5
A;2
3;20;6
….
Mein Problem ist jetzt, dass alle Werte in einer Zeile gespeichert werden. Wo liegt mein Fehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
Aaron12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2016, 17:48     Titel:
  Antworten mit Zitat      
Ok habe den Fehler gefunden. Anstatt eines kommas muss hinter data ein Semikolon

Code:

data = [data; textscan(l, '%s;%f')];
    else
        data2 = [data2; textscan(l, '%f;%f;%f')];
 


Ein Problem ist jetzt noch, dass die Daten den Typ cell und nicht double haben. So habe ich nicht die Möglichkeit die Werte zu plotten.
Gibt es da eine Möglichkeit der Konvertierung, oder kann ich die Werte schon direkt im Typ Double speichern?
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: 25.04.2016, 21:51     Titel:
  Antworten mit Zitat      
Hallo Aaron12,

Die Werte sind weder als Cell noch als Double gespeichert, sondern als Text. textscan gibt jedoch ein Cell aus. Also
Code:
newData = textscan(l, '%s;%f');
data = [data; newData{:, 2}];  % Vermutlich! Probiere es mal aus
 

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Aaron12
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2016, 08:12     Titel:
  Antworten mit Zitat      
Mit dem Befehl Cell2mat kann ich die Werte dann auch wieder als "double" ausgeben und plotten.

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