필터 지우기
필터 지우기

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!