Extract row data from a complex data file
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
その他の回答 (1 件)
Sulaymon Eshkabilov
2023 年 12 月 12 日
編集済み: Sulaymon Eshkabilov
2023 年 12 月 12 日
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}
参考
カテゴリ
Help Center および File Exchange で String Parsing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!