Parsing and editing txt file line by line

2 ビュー (過去 30 日間)
Elzbieta
Elzbieta 2024 年 6 月 19 日
コメント済み: Voss 2024 年 7 月 8 日
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

採用された回答

Voss
Voss 2024 年 6 月 19 日
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 件のコメント
Elzbieta
Elzbieta 2024 年 7 月 8 日
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 2024 年 7 月 8 日
The file has two "starts" in a row, at +2612.0000000 and +2615.0000000, with no "end" in between.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEnvironment and Settings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by