Extract row data from a complex data file
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Research
am 12 Dez. 2023
Bearbeitet: Sulaymon Eshkabilov
am 12 Dez. 2023
Hello Support,
I've a data file with multiple rows and columns, and I want to extract column values from a defined row. It has headers in first column. See attached the file. I want to extract row number = 24 data of columns from 2 to 60. This row has total 60 columns with first column is the header.
Here is my matlab code, but it is not really working.
filename = complex_data.txt';
n_line = 24; % define line to read
fid = fopen(filename); % open file
result = textscan(fid, '%s',1,'Headerlines', n_line-1, 'Delimiter' ,''); % read line
result2 = result{1}; % unbox from cell
It gives the following, but in 1x1 cell array. I cannot seperate each column value.
Any good solutions?
Thank you!
>> result2{1,1}
ans =
'dN [P] 0.000000 0.000000 188.099869 1400.467163 3013.950684 4364.177246 4175.059570 3351.919678 2300.576904 1153.224731 522.787903 247.329086 141.390442 84.811569 42.784401 26.608347 32.193478 9.810030 2.089025 1.043882 3.096093 0.032933 0.499443 1.582599 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.030052 0.000000 0.000000 0.000000 0.000000 1.021430 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 '
0 Kommentare
Akzeptierte Antwort
Voss
am 12 Dez. 2023
Bearbeitet: Voss
am 12 Dez. 2023
Here's one way:
filename = 'complex_data.txt';
L = readlines(filename);
% n_line = 24; % define line to read
str = 'dN [P]';
n_line = find(startsWith(L,str),1);
result = sscanf(extractAfter(L(n_line),str),'%f',[1 Inf]);
format long g
disp(result);
2 Kommentare
Weitere Antworten (1)
Sulaymon Eshkabilov
am 12 Dez. 2023
Bearbeitet: Sulaymon Eshkabilov
am 12 Dez. 2023
Here is how it can be attained:
filename = 'complex_data.txt';
% Set up the Import Options and import the data:
opts = delimitedTextImportOptions("NumVariables", 61);
% Specify range and delimiter:
opts.DataLines = [20, Inf];
opts.Delimiter = "\t";
% Specify column names and types:
opts.VariableNames = ["ParticleDistribution60sauto", "VarName2", "VarName3", "VarName4", "VarName5", "VarName6", "VarName7", "VarName8", "VarName9", "VarName10", "VarName11", "VarName12", "VarName13", "VarName14", "VarName15", "VarName16", "VarName17", "VarName18", "VarName19", "VarName20", "VarName21", "VarName22", "VarName23", "VarName24", "VarName25", "VarName26", "VarName27", "VarName28", "VarName29", "VarName30", "VarName31", "VarName32", "VarName33", "VarName34", "VarName35", "VarName36", "VarName37", "VarName38", "VarName39", "VarName40", "VarName41", "VarName42", "VarName43", "VarName44", "VarName45", "VarName46", "VarName47", "VarName48", "VarName49", "VarName50", "VarName51", "VarName52", "VarName53", "VarName54", "VarName55", "VarName56", "VarName57", "VarName58", "VarName59", "VarName60", "VarName61"];
opts.VariableTypes = ["string", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "string"];
% Specify file level properties:
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% Specify variable properties:
opts = setvaropts(opts, ["ParticleDistribution60sauto", "VarName61"], "WhitespaceRule", "preserve");
opts = setvaropts(opts, ["ParticleDistribution60sauto", "VarName61"], "EmptyFieldRule", "auto");
% Import the data:
MY_DATA = readtable(filename, opts);
% DATA extraction:
WHAT_I_WANT = MY_DATA{5,2:60}
Siehe auch
Kategorien
Mehr zu String Parsing 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!