Extract row data from a complex data file
    5 views (last 30 days)
  
       Show older comments
    
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 Comments
Accepted Answer
More Answers (1)
  Sulaymon Eshkabilov
      
 on 12 Dec 2023
        
      Edited: Sulaymon Eshkabilov
      
 on 12 Dec 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}
See Also
Categories
				Find more on Text Files 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!

