Clear Filters
Clear Filters

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

17 views (last 30 days)
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

Accepted Answer

Harald
Harald on 13 Dec 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 Comments
Niklas Burczyk
Niklas Burczyk on 13 Dec 2023
Danke für die schnelle Hilfe. Hat geklappt. Scheint wohl das festlegen von DataLines gewesen zu sein. Habe ich irgendwie übersehen.
Harald
Harald on 13 Dec 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

Sign in to comment.

More Answers (0)

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!