Filter löschen
Filter löschen

Einlesen .txt mit Decimal Separator ',' führt zum wegfallen der Leerfelder im Datensatz

8 Ansichten (letzte 30 Tage)
Hallo zusammen,
ich versuche derzeit, eine .txt-Datei mit readtable einzulesen. Über den ImportData-Button funktioniert das sehr einfach. Allerdings nicht mit dem von mir geschriebenen Code.
% Dateiauswahl Winkel
clear filename
clear path
[filename, path] = uigetfile('*.txt', 'Datei(en) auswählen - Winkeldaten', 'MultiSelect', 'on');
% Überprüfung, ob eine oder mehrere Dateien ausgewählt wurden
if ischar(filename)
filename = {filename};
end
for i = 1:length(filename)
% Einlesen der txt-Datei in eine Tabelle
opts = detectImportOptions(fullfile(path, filename{i}),EmptyLineRule="read",TextType="string", DecimalSeparator=",");
oldtable = readtable(fullfile(path, filename{i}),opts);
%Abspeichern
varname = sprintf('Winkel_%d', i);
eval(sprintf('%s = oldtable;', varname));
assignin('base', varname, oldtable);
end
Im Anhang befinden sich die .txt-Datei (Winkel_VP4_21.txt) und das gewünschte Ergebnis (matlab.mat). Mein Problem besteht darin, dass die Leerstellen in der .txt-Datei nicht erkannt werden bzw. wegfallen, wenn ich den Code verwende.
Ich möchte auch nicht den von Matlab generierten Code verwenden, da es dazu kommen kann, dass sich die Spaltenbezeichner ändern und von Datei zu Datei nicht dieselben sind wie in Winkel_VP4.20.txt.
Vielen Dank im Voraus! Wenn jemand mir helfen kann, wäre ich sehr dankbar.
Viele Grüße,
Niklas Burczyk

Akzeptierte Antwort

Harald
Harald am 13 Dez. 2023
Hallo,
man kann sich ja dennoch durch den von MATLAB generierten Code inspirieren lassen. Die entscheidenden Zeilen sind hier wohl:
opts.DataLines = [2, Inf];
opts.Delimiter = "\t";
Wenn du das in den Code einfügst, stimmen die Zeilenanzahlen mit der .mat-Datei überein.
Viele Grüße,
Harald
  2 Kommentare
Niklas Burczyk
Niklas Burczyk am 13 Dez. 2023
Danke für die schnelle Hilfe. Hat geklappt. Scheint wohl das festlegen von DataLines gewesen zu sein. Habe ich irgendwie übersehen.
Harald
Harald am 13 Dez. 2023
Hallo,
noch eine Anmerkung zum Code: eval / assignin würde ich wenn irgend möglich vermeiden.
Eine Alternative wäre hier ein Cell Array:
winkel{i} = readtable(fullfile(path, filename{i}),opts);
Grüße,
Harald

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!