Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
Extracting certain data from very large text/numeric data
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I am trying to extract data from a hoc file which is a combination of text,whitespace,characters, and numbers. I need to be able to find the row index of wherever there occurs the string "section[%d]" where d is an integer, just being able to find the row when I use importdata to a cell array would be good enough, there are upwards of like 40 occurences of the string so I need to find all of them.
6 comentarios
Respuestas (2)
Walter Roberson
el 28 de Ag. de 2013
find(~cellfun(@isempty, regexp(YourCell, 'section\[%\d+\]', 'start')))
0 comentarios
Cedric
el 29 de Ag. de 2013
Editada: Cedric
el 29 de Ag. de 2013
Based on your comment: one way to tackle that is to split the file according to section headers/footer, so you get blocks that you can process using TEXTSCAN. Example:
content = fileread('myData.txt') ;
blocks = regexp(content, '(}\s*){0,1}section\[\d+\]\s*{|}', 'split') ;
blocks = blocks(2:end-1) ; % Eliminate first empty and last
% (after last '}') blocks.
nBlocks = length(blocks) ;
data = cell(nBlocks, 1) ;
for bId = 1 : nBlocks
data{bId} = textscan(blocks{bId}, 'pt3dadd(%f,%f,%f,%f,%f)') ;
end
and if you don't want data to be a cell array of cell arrays (output of _TEXTSCAN_is a cell array of columns), you can replace the above line in the FOR loop with:
buffer = textscan(blocks{bId}, 'pt3dadd(%f,%f,%f,%f,%f)') ;
data{bId} = [buffer{:}] ;
0 comentarios
La pregunta está cerrada.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!