How to read and process a text file?

3 次查看(过去 30 天)
I have attached a sample text file. As yOu can see the comment lines starting with $ must be ommited and the values alone must be read and assigned as variables. For the 'ID' set each column must be named separately like a1 to a4 for the second column and b1 to b4 for the third and so on. Similarly the 'NEXT' set must also be named as each column separately. Please help......
  2 个评论
Walter Roberson
Walter Roberson 2019-12-15
Don't do that. Put all of the data into the same variable. Use a structure with dynamic field names for the main variable and use vectors instead of a1 a2 and so on.
Bertilla Raque
Bertilla Raque 2019-12-15
Thank you for your suggestion....I need to perform calculations furthur with the stored variables... and i dont kno how to read the ID set separately and NEXT set separately. Textscan only reads once and then throws a error... how to read the text file from NEXT directly?

请先登录,再进行评论。

回答(1 个)

Walter Roberson
Walter Roberson 2019-12-16
S = fileread('sample.txt');
S = regexprep(S, {'^\$.*?\n', '\r'}, {'', ''}, 'lineanchors');
all_ids = string(regexp(S, '^\S*', 'match', 'lineanchors'));
noids = regexprep(S, '^\S*\s*', '', 'lineanchors');
mask = all_ids(1:end-1) ~= all_ids(2:end);
stops = find([mask true]);
eol_pos = regexp(noids, '.$', 'lineanchors');
block_lengths = diff([0, eol_pos(stops)]);
blocks_text = mat2cell(noids, 1, block_lengths);
ids = all_ids(stops);
values = cellfun(@(B) cell2mat(textscan(B, '', 'CollectOutput', true)), blocks', 'uniform', 0);
At this point, ids contains a string vector of the names such as NEXT, and values is a cell array of numeric arrays, with each entry containing the numeric data corresponding.
  9 个评论
Walter Roberson
Walter Roberson 2019-12-20
Again, why do you need to name the columns when you can just index instead?
Bertilla Raque
Bertilla Raque 2019-12-20
so that I can use in them in furthur calculations in a loop. I think I was having problems with the loop because of the scalar problem I'll try indexing.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 String 的更多信息

产品


版本

R2012b

Community Treasure Hunt

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

Start Hunting!

Translated by