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

Einlesen einer bestimmter werte aus *.txt

 

Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2017, 08:12     Titel: Einlesen einer bestimmter werte aus *.txt
  Antworten mit Zitat      
Hallo Allerseits,

ich habe mal ein kleines anliegen was ich mit meinen Kenntnissen nicht so ganz lösen kann.
Für eine Projektarbeit soll ich eine Versuchsanlage auslegen. Als ausgangs werte gibt es eine Messtabelle in TXT Format. Das ganze kann man auch "Manuell" lösen, ich wollte aber dafür MatLab verwenden, wenn wir es schon als Studiumwerkzeug haben.
Mein Problem besteht darin , dass ich die Txt nicht eingebunden bekomme. Leider war das Maximale im Labor was wir gemacht haben bissl Induktivität berechnen und paar Plots und Grafiken zeichnen.

Mit einem Code was ich im Netz gefunden habe, ersetze ich komas durch punkte damit MatLab damit was anfangen kann.

Code:


function comma2point(File)
% Generate a new file named Oldfilename_Modified.ending. In the new File all
% ',' are changed to '.' Needs a full datapath and filename as input.
   
    Name=textscan(File,'%s%s','delimiter','.');
    NewFile=strcat(Name{1}, '_punkt.',Name{2});
    copyfile(File, NewFile{1});
    file    = memmapfile(NewFile{1},'Writable',true);
    comma   = uint8(',');
    point   = uint8('.');
    file.Data(( file.Data==comma)' ) = point;
   
end

 


ich bin kein Urheber dieses codes. Aber es funktioniert.
Die Numerierungszeile und Datum sind unwichtig. Zeit ist wichtig aber in Minuten.
ZB: dauer = [0:10:300] (startet bei 0 Minuten und dauert 300 Minuten), kann ich aber im Programm fest hinterlegen.

Was für mich wichtig ist sie die Werte in spalten:
zuluftTemp
abluftTemp
luftgesch
druck
gewicht
gewichtsändrerung

Es würde mir sehr freuen wenn ihr mich nicht gleich zerfleischt für mein Unwissen und hilft dieses Projekt umzusetzen Embarassed . Auf die benotung oder sonstiges hat es keine Auswirkung. Mache es mehr für mich, für gute Note kann ich auch das ganze in exel Manuel machen oder aufm Blatt.
Vielen Dank im voraus.

Johannes

2017-03-20-Daten.txt
 Beschreibung:
Original aus dem Simulator

Download
 Dateiname:  2017-03-20-Daten.txt
 Dateigröße:  165.3 KB
 Heruntergeladen:  407 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.06.2017, 16:12     Titel: Re: Einlesen einer bestimmter werte aus *.txt
  Antworten mit Zitat      
Hallo Tryz,

Du hast nun Code, der die Kommas in Punkte umwandelt.
Was möchtest Du jetzt weiter tun?

Zitat:
Die Numerierungszeile und Datum sind unwichtig. Zeit ist wichtig aber in Minuten.
ZB: dauer = [0:10:300] (startet bei 0 Minuten und dauert 300 Minuten), kann ich aber im Programm fest hinterlegen.

Was bedeutet das genau?
Du kannst das File mit textscan einlesen und dabei alle Spalten importieren. Versuche es mal und erkläre dann, was noch nicht wie gewünscht läuft.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2017, 07:10     Titel:
  Antworten mit Zitat      
Ja genau, ich habe die Simulator Datei angepasst so das matlab meine Dezimalzahlen richtig erkennt . Aber das einlesen funktioniert nicht. Ich habe schon vieles probiert leider ist mein wissen viel zu klein dafür. Habe immer Fehlermeldungen oder es kommen keine werte rein.

ich hätte es gerne die es so das ich die oben genante variablen erzeuge und die dan mit werten aus meiner txt fülle, zb

zuluftTem mit allen werten aus der 4 spalte
druck alle werte aus der 7 spalte.

aber wie gesagt ich hab nicht mal eine Vorstellung wie ich anfangen soll. was ich mache ist nichts anderes als fremde Codes aus dem netzt passend umzuschreiben, aber naja sogar dafür bin ich zu dum Sad
 
equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 09.06.2017, 07:31     Titel:
  Antworten mit Zitat      
Hallo Tryz,

du hast in deinem einlesecode

Code:
Name=textscan(File,'%s%s','delimiter','.');


als Trennzeichen einen Punkt, in deiner angehängten txt Datei sehe ich allerdings keine Punkte als Trennzeichen außer im Datum...
Außerdem wenn ich mich nicht täusche muss bei textscan pro einzulesende Spalte ein %s (o.Ä.) stehen, sonst ließt er nur 2 Spalten ein.

Was für eine Fehlermeldung kommt denn?
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2017, 09:34     Titel:
  Antworten mit Zitat      
Hallo equi,

mit dem code hab ich kein Problem funktioniert alles wie soll. ist aber auch nur Funktion um die Kommas durch Punkte zu ersetzen. im Anhang ist die damit erzeugte Datei. mir gehts um die nächsten schritte

2017-03-20-Daten_punkt.txt
 Beschreibung:

Download
 Dateiname:  2017-03-20-Daten_punkt.txt
 Dateigröße:  165.3 KB
 Heruntergeladen:  463 mal
 
Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2017, 07:18     Titel:
  Antworten mit Zitat      
wie überspringe ich die ersten 16 Zeilen beim einlesen?
 
equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 12.06.2017, 07:39     Titel:
  Antworten mit Zitat      
Probiers mal mit

Code:
textscan(File, '%*[^\n]', 16);


oder

Code:
textscan(....,'headerlines',16);

_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2017, 10:27     Titel:
  Antworten mit Zitat      
Also Folgendes Problem hab ich gefunden.
zuerst habe ich eine Test txt geschrieben auf dem PC chr.txt und dazu volgenden Code

Code:

filename = fullfile ('chr.txt');

fileID = fopen(filename);
C = textscan(fileID,'%d %s %s %f %f %f %f  %f','headerlines',15);

whos C
 


Damit funktioniert es soweit gut.
Dann habe ich probiert den Code auf meine Simulator-Datei anzuwenden und es funktioniert nicht. Da kommt das ABER, wenn man die Datei zum erstem mal öffnet ist alles noch ok. Ein mal das Programm laufen lassen geht nichts alle array sind leer. Dann habe ich die Datei geöffnet (nicht im Matlab) sondern so über Explorer und folgendes gefunden. es sind lauter China Symbole drin.

Das ist glaub das Problemm warum mein einlesen nicht funktioniert. Was meint ihr dazu?

screen.JPG
 Beschreibung:
anzeige Matlab und Editor

Download
 Dateiname:  screen.JPG
 Dateigröße:  204.44 KB
 Heruntergeladen:  342 mal
2017-03-20-Daten_punkt.txt
 Beschreibung:
datei nach einmal durchlaufen

Download
 Dateiname:  2017-03-20-Daten_punkt.txt
 Dateigröße:  165.25 KB
 Heruntergeladen:  517 mal
chr.txt
 Beschreibung:
selbst erstelte txt Datei zum testen

Download
 Dateiname:  chr.txt
 Dateigröße:  168 Bytes
 Heruntergeladen:  311 mal
 
equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 12.06.2017, 10:57     Titel:
  Antworten mit Zitat      
Ich hab zwar keine Ahnung woher die Chinesischen Schriftzeichen kommen aber ich würde mal sagen dann liegt es an deinem Programm Very Happy

Kommt in Matlab irgendeine Fehlermeldung?

Evtl. würde ein Auszug aus deinem Programm weiterhelfen.
Vermutlich nicht für mich aber für andere, denn sowas mit den Symbolen hatte ich noch nie:D
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2017, 11:50     Titel:
  Antworten mit Zitat      
Ne kommt nichts. nur die ganzen Werte sind leer. Steht 0x1 cell.
Habe jetzt die ersten 20 Zeilen manuell abgetipt und gespeichert, damit funktioniert es. jetzt muss ich schauen was mit der txt aus dem Simulator nicht ok ist.
 
Tryz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2017, 14:52     Titel:
  Antworten mit Zitat      
Problem gelöst, aber nicht mit Hilfe vom Forum. Leider ist der Forum bis auf den Tipp wie mann Zeilen auslassen kann nicht wirklich Hilfreich. Schade Tote Tose hier. Nicht empfehlenswert für ein Hilfesuchenden!!!
 
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 - 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.