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

8 次查看(过去 30 天)
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

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!