Parsing and editing txt file line by line

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

Accepted Answer

Voss
Voss on 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 Comments
Elzbieta
Elzbieta on 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 on 8 Jul 2024
The file has two "starts" in a row, at +2612.0000000 and +2615.0000000, with no "end" in between.

Sign in to comment.

More Answers (0)

Categories

Find more on Environment and Settings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!