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

Einstieg in die Programmierung Textfiles einlesen

 

Anz_im_Sand
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2018, 19:53     Titel: Einstieg in die Programmierung Textfiles einlesen
  Antworten mit Zitat      
Hallo zusammen!

Ich beginne grade mit Matlab zu arbeiten.

Ich hab angefangen mit Grafiken und einfachen Rechnungen und möchte nun gerne mit einem Skript starten.

Folgendes habe ich mir überlegt um meine "Matlab-Können" zu verbessern:

Ich habe immer eine Anzahl an Messdaten, die ich mithilfe eines Skriptes zusammenfassen möchte. Diese Messdaten habe ich in ASCI Datein.

Nun möchte ich zunächst ein Skript schreiben, welches mir die Messdaten alle in einem Matrix in Matlab überträgt. Dabei ist anzumerken, dass die erste Spalte (also meine vorgegebenen x-Werte) immer gleich sind.

Beispiel ich habe 5 Messreihen und ich möchte eine Matrix haben mit x y1 y2 y3 y4 y5.

Ich hoffe ich könnte es verständlich erklären.

Ich hab mich auch schon eingelesen, dass ich zunächst das File öffnen muss. Dabei krieg ich jedoch immer eine Fehlermeldung:
Number of columns on line 258 of ASCII file test.txt must be the same as previous lines.
Kann man diesen Fehler umgehen? Ich gehe davon aus er entsteht dadurch, dass in meiner Datei folgendermaßen gezählt wird: 0 0,5 1 1,5
Und sich somit die Stellen hinter dem Komma unterscheiden? - Kann das sein?

Auch bin ich mir nicht sicher ob ich erst mit der Schleife oder dem Öffnen des Files beginen muss.

Über Hilfestellung würde ich mich sehr freuen, da ich grade beginne mich tiefer mit Matlab beschäftige und ich es eigentlich sehr interessant find.

Schönen Abend euch!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.01.2018, 22:22     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich hab mich auch schon eingelesen, dass ich zunächst das File öffnen muss. Dabei krieg ich jedoch immer eine Fehlermeldung:
Number of columns on line 258 of ASCII file test.txt must be the same as previous lines.

Wie versuchst du die Datei zu öffnen?

Wird in der Datei tatsächlich Komma als Dezimaltrennzeichen verwendet? MATLAB erwartet normalerweise Punkt.

Was passiert denn in Zeile 258 besonderes?

Am einfachsten ist der Datenimport an sich, wenn man die Datei rechtsklickt und dann auf Import Data geht. Dort kann man interaktiv alle Einstellungen machen und bei Klick auf das Dropdown unter dem grünen Haken auch Code aus den Einstellungen generieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anz_im_Sand
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2018, 09:14     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe noch mal ein neues File mit Daten erstellt, da ich den Fehler nicht gefunden habe. Nun taucht dieser Fehler nicht mehr auf.

Ich wollte mir gerne ein Skript erstellen mit dem ich insgesamt immer 16 Datensätze in eine Matrix eintrage.
Da ich diese 16 Datensätzte ca. 50 mal am Tag generiere wollte ich das ganze automatisch erstellen und nicht jedes mal interaktiv über den Import Data Button machen.

Bis jetzt habe ich folgdes Programm:
Code:

filename = 'C:\Users\Benutzer\Documents\Programmierung\Test_Ordner\*.txt'

fileID = fopen(filename,'r');

dataArray = textscan(fileID);

fclose(fileID);
 


Den Stern im Pfad habe ich genommen damit ich alle 16 Dateien öffnen kann. Ich glaube ich muss aber noch eine for Schleife einbauen.

Bei der fileid habe ich den Modus r verwendet da in meiner ASCI Datei die Werte Tabstopp getrennt sind.
Hier ein Ausschnitt aus meinen Daten:

    400 393,5
    401 392,9
    402 391,4
    403 386,4
    404 378,2
    405 369
    406 360,8


Vielen Dank schon mal für deine schnelle Antwort
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.01.2018, 09:53     Titel:
  Antworten mit Zitat      
Hallo,

wenn du alle Dateien nacheinander öffnen und einlesen willst, kannst du datastore und readall verwenden und dir so die Schleife schenken.

Zitat:
nicht jedes mal interaktiv über den Import Data Button machen.

Wie gesagt: man kann daraus ein Skript erstellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anz_im_Sand
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2018, 19:24     Titel:
  Antworten mit Zitat      
Ich habe mich noch einmal mit meinem Code auseinander gesetzt.

Ich würde schon ganz gerne mit einer Schleife arbeiten. Ich hab mir vorgenommen dies hinzubekommen und nun ist der Ehrgeiz groß Smile

Soweit habe ich mein Skript umgeschrieben, jetzt kann ich zumindest einzelne Datensätze öffnen.

Code:

filename = 'C:\Programmierung\Test_Ordner\Spec_0.txt';
delimiter = '\t';
formatSpec = '%f%f%[^\n\r]';
fileID = fopen(filename,'r');
C=textscan(fileID,formatSpec)
fclose(fileID);
Spectrum1 = [C{1:end-1}];
clearvars filename delimiter formatSpec fileID C ans;


Nun möchte ich gerne das er nicht nur die eine Messreihe Spec_0 einliest in diese Matrix sondern auch alle anderen Dateien, eben über eine Schleife.

Ich würde jetzt im Pfad als Filename einfach Spec_0 durch * ersetzen. Damit eben alle Dateien in dem Ordner ausgelesen werden.

Wo wäre es nun sinnvoll mit der Schleife anzufangen?

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

Forum-Meister


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

bitte auch mal die Suchfunktion bemühen. Dann kommt z.B. das hier:
http://www.gomatlab.de/csv-dateien-.....-konvertieren-t43631.html

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