MATLAB Answers

Extract data between specific indicators from txt file

1 view (last 30 days)
chlor thanks
chlor thanks on 29 Apr 2021
Commented: chlor thanks on 2 May 2021
I have a demo1.txt file that looks something like this
R1 0.222 0.444 0.555
0.777 0.999
NR8 0.001 0.002 0.003
0.004 0.008
NR1 0.004 0.009 0.008
0.006 0.009
I would like to only extract the numbers in the R1 section (in this case, search for the exact match as the string "R1", grab all numbers after "R1" up until NaN), then create an excel spreadsheet named "demo1" and have the following entries in a column:
R1
0.222
0.444
0.555
0.777
0.999
Any hint will be appreciated! Thank you very much!
  3 Comments
chlor thanks
chlor thanks on 2 May 2021
Never mind I figured it out by myself, thanks for the inspiration and stepping in to help anyways!
clc;
clear;
Str = fileread('data.txt');
TStr = split(Str)
TStr_R1 = find(strcmp(TStr, 'R1'))
R1_end = str2double(TStr(TStr_R1:end))
R1_nan = find(isnan(R1_end));
R1 = R1_end((R1_nan(1)+1):(R1_nan(2)-1))

Sign in to comment.

Answers (1)

Mathieu NOE
Mathieu NOE on 30 Apr 2021
hello
this is one solution - hope it helps !
tested with the attached txt file
= readlines('data.txt');
data_str = 'R1';
%% main loop
out_total = [];
mm = (strfind(ll,data_str));
for ci = 1:numel(mm)
if cell2mat(mm(ci)) > 0
out = str2double(split(ll(ci)));
out(isnan(out)) = [];
out_total = [out_total; out(:)];
end
end
% write to excel a table
t = array2table(out_total,'VariableNames',{data_str});
writetable(t,'output.xlsx');
  5 Comments
chlor thanks
chlor thanks on 30 Apr 2021
Thank you very much for the updated code! So far looks like it extracted
R1
0.222
0.444
0.555
0.004
0.009
0.008
but I need
R1
0.222
0.444
0.555
0.777
0.999

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by