|
|
Einlesen einer Textdatei die Tab getrennt ist |
|
Siegfried112 |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.12.2019, 23:13
Titel: Einlesen einer Textdatei die Tab getrennt ist
|
|
|
|
|
Halle wehrte Matlab Gemeinde,
ich bin auf der Suche nach einer Möglichkeit schnell sehr große Textdateien einlesen und diese in einen Vektor umwandeln zu können. Danach will ich aus den Samplings den Offset abzeihen und sie normalisieren, um sie dann der audiowrite Funktion zu übergeben. (Die Textdatei habe ich angehangen)
Diese Textdateien enthalten ADC Samples einer Audioaufnahme, wobei jedes Sample aus 4 Zahlen besteht, die durch ein Tab getrennt sind. Diese Samples sind einfach in eine lange Reihe geschrieben. Die Anzahl der Samples kann gut 20 Millionen (ca. 100MB) betragen; für 10 min Aufnahme.
Ich habe mittlereweile schon 6 Befehle probiert, wobei ich mit keinem zu einem Ergebnis kam:
% es kommen nur zwei stelligen Zahlen raus
read_data1 = uint16(importdata(filename,'\t'));
read_data = read_data1{1}(:);
% sehr langsam beim import
read_data = tdfread(filename,'\t');
% viel zu wenige Werte sind in read_data vorhanden
fileID = fopen(filename);
read_data = textscan(fileID,'%u16','Delimiter','\t');
fclose(fileID);
read_data = read_data{1}(:);
% sehr langsam beim import
read_data = textread(filename);
% gibt eine Fehlermeldung raus
read_data = dlmread(filename,'');
% gibt einen leere Table aus
read_data = readtable(filename);
Vielleicht habt ihr eine Idee. Über einen Tipp würde ich mich sehr freuen.
Beste Grüße
Siegfried
Beschreibung: |
|
Download |
Dateiname: |
DATA_ADC1.TXT |
Dateigröße: |
2.34 MB |
Heruntergeladen: |
254 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.12.2019, 10:44
Titel:
|
|
Hallo,
ich habe den textscan-Ansatz getestet. Damit bekomme ich 4682 Werte, und die letzten davon sind wie ich es in der Datei sehe 2115; 2063; 2029.
Wie viele Werte erwartest du denn?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Siegfried112 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.12.2019, 11:47
Titel:
|
|
Hallo Harald,
danke für deine Antwort. Mit textscan hatte ich es auch schon probiert und genau solche Werte rausbekommen. 4000 sind nur leider zu wenig. Jedes Sample besteht aus 4 Zahlen und einem Tab, also insgesamt 5 Bytes.
Eine kleine Rechnung:
2,34 MB * 1024^2 = 2.453.668 Byte / 5 = 490.734 Werte
Also weit über 4000. Ich habe keine Ahnnung warum die Befehle das nicht richtig einlesen können.
Beste Grüße
Siegfried
|
|
|
Siegfried112 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.12.2019, 12:03
Titel:
|
|
|
|
|
Harald hat Folgendes geschrieben: |
Hallo,
ich habe den textscan-Ansatz getestet. Damit bekomme ich 4682 Werte, und die letzten davon sind wie ich es in der Datei sehe 2115; 2063; 2029.
Wie viele Werte erwartest du denn?
Grüße,
Harald |
Ich glaube ich weiß warum nur 4682 Wert gelesen werden.
Ich habe die Datei mit dem Editor "Atom" geöffnet und gesehen, dass die Werte dort in großen Blöcken stehen. (siehe Bild im Anhang) Ich habe den ersten Block markiert. Ganz unten auf dem Bild steht "1:23410". Die erste Zahl ist die Anzahl der Zeilen und die zweite die Anzahl der Zeichen. Teile ich die Anzahl der Zeichen durch 5 komme ich genau auf die 4682.
Das heißt, z. B. Textscan ließt nur den ersten Block ein. Nun stellen sich mir zwei Fragen:
1. Wie kann ich Matlab damit umgehen?
2. Woher kommt diese Blockeinteilung, denn, wenn wir die Samples mit dem Microcontroller schreiben, schreiben wir die einfach hintereinander weg?
Beste Grüße,
Siegfried
Beschreibung: |
|
Download |
Dateiname: |
Anmerkung 2019-12-20 115707.png |
Dateigröße: |
320.67 KB |
Heruntergeladen: |
324 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.12.2019, 12:20
Titel:
|
|
Hallo,
mit
siehst du, dass neben den Ziffern noch 0 und 9 als Trennzeichen vorkommen.
Also:
Keine Ahnung, warum die Hardware das so rausschreibt.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Siegfried112 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 18.12.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.12.2019, 14:01
Titel:
|
|
Hallo,
Zitat: |
siehst du, dass neben den Ziffern noch 0 und 9 als Trennzeichen vorkommen. |
Als Trennzeichen sollten eigentlich nur Tabs vorkommen. Komisch.
Danke, das hat super geklappt! Ich musste nur noch %u16 nach %n ändern da die audiowrite Funktion uint16 nicht nimmt.
Also nächtes muss ich wohl meinem Microcontrollerprogramm auf den Zahn fühlen warum da so ein so was raus kommt.
Beste Grüße
Siegfried
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|