Parsing and editing txt file line by line

2 Ansichten (letzte 30 Tage)
Elzbieta
Elzbieta am 19 Jun. 2024
Kommentiert: Voss am 8 Jul. 2024
Hello,
How to automatically transform a txt file in this form by removing strings start and end:
Onset,Annotation
+234.3428079,start
+244.1317829,end
+255.1007751,start
+263.0000000,end
to this form:
+234.3428079,+244.1317829
+255.1007751,+263.0000000
Regards

Akzeptierte Antwort

Voss
Voss am 19 Jun. 2024
filename_in = 'test.txt';
filename_out = 'test_out.txt';
% show the input file's content, for reference
type(filename_in)
Onset,Annotation +234.3428079,start +244.1317829,end +255.1007751,start +263.0000000,end
% read filename_in into a table of size n-by-2 containing strings
opts = detectImportOptions(filename_in);
opts = setvartype(opts,opts.VariableNames,'string');
T = readtable(filename_in,opts);
% reshape the first table variable to size n/2-by-2 appropriately,
% and write it to the output file
writematrix(reshape(T{:,1},2,[]).',filename_out)
% check the output
type(filename_out)
+234.3428079,+244.1317829 +255.1007751,+263.0000000
  4 Kommentare
Elzbieta
Elzbieta am 8 Jul. 2024
Hello,
While processing the following file:
Onset,Annotation
+234.0000000,start
+354.0000000,end
+586.0000000,start
+704.0000000,end
+938.0000000,start
+1056.0000000,end
+1396.0000000,start
+1400.0000000,end
+1810.0000000,start
+1928.0000000,end
+2162.0000000,start
+2282.0000000,end
+2514.0000000,start
+2595.0000000,end
+2612.0000000,start
+2615.0000000,start
+2630.0000000,end
+2865.0000000,start
+2971.0000000,end
+3215.0000000,start
+3332.0000000,end
I am receiving the following error:
Error using reshape
Product of known dimensions, 2, not divisible into total number of elements, 21.
Error in parseTxtAnnotations (line 20)
writematrix(reshape(T{:,1},2,[]).',filename_out)
I am using the following code:
pathInputFolder = 'C:\Users\admin\Documents\MATLAB\PROVIDE\database28_05_2024\mat_files\ECG\trial_ECG_data_txt\trial_ECG_data_edf\edited_3\annotations\';
%filename_in = fullfile(pathInputFolder,[names{i},'_trial_ECG_data_edited_annotations.txt'])
filename_in = 'C:\Users\admin\Documents\MATLAB\PROVIDE\database28_05_2024\mat_files\ECG\trial_ECG_data_txt\trial_ECG_data_edf\edited_3\annotations\Alfredo_trial_ECG_data_edited_annotations.txt';
filename_out = 'C:\Users\admin\Documents\MATLAB\PROVIDE\database28_05_2024\mat_files\ECG\trial_ECG_data_txt\trial_ECG_data_edf\edited_3\annotations\Alfredo_trial_ECG_data_annotations_edited_parsed.txt';
% show the input file's content, for reference
type(filename_in)
% read filename_in into a table of size n-by-2 containing strings\
opts = detectImportOptions(filename_in);
opts = setvartype(opts,opts.VariableNames,'string');
T = readtable(filename_in,opts);
% reshape the first table variable to size n/2-by-2 appropriately,
% and write it to the output file
writematrix(reshape(T{:,1},2,[]).',filename_out)
% check the output
type(filename_out)
Could you tel me where the problem can be found?
Voss
Voss am 8 Jul. 2024
The file has two "starts" in a row, at +2612.0000000 and +2615.0000000, with no "end" in between.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Environment and Settings finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by