Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

Importing data from text file

1 visualización (últimos 30 días)
Henrik
Henrik el 5 de Dic. de 2014
Cerrada: MATLAB Answer Bot el 20 de Ag. de 2021
I need help reading a number of data files. An example of how the files look is the following:
# some header text and numbers
# there are around 15 lines of this, the number of lines changes
# H K L Delta more names
1 2 90 22
2 4 5 9
1 8 7 2
I need to get the columns of H, K, L and a few others out of this file. The problem is that the number of header lines changes, the number of columns changes, the order of the parameters in the columns changes, and the length of the columns change.
So another file could be
# some different header text and numbers
# here are some numbers
# there are around 15 lines of this, the number of lines changes
# Delta L H K Delta more names
4 2 9 40
2 4 5 9
To complicate things, all my data files are in one big text file. I have read it using
alldata=fileread(filename);
and then find the individual files by searching for a string that denotes the start of a new file:
start_index=strfind(alldata,startstring);
end_index=strfind(alldata,endstring);
this_file=alldata(start_index:end_index);
What I get out of this is a 1xn character string. When I do
this_file
In the MATLAB window, I get the output shown above. This is where I got stuck.
EDIT:
I found a solution. In short, I used
comment_indices=strfind(data_file,'#');
to remove the first lines of comments
lineshift_indices=strfind(data_file,sprintf('\n'));
to find where the actual data starts
header_names=data_file(1:lineshift_indices(1));
header_names=strsplit(header_names);
to find the header names
and then
H_ind=find(ismember(header_names,'H'));
to find the column for each header.
It works as intended, but if anyone has suggestions for improvements, I'd be happy to see them

Respuestas (1)

Miroslav Balda
Miroslav Balda el 5 de Dic. de 2014
You have preprocessed the problem rather far. Store 'the_file' in the text file, say 'data.txt' and then use the function txt2mat
www.mathworks.com/matlabcentral/fileexchange/18430
for creating matrix A containing your data columns.
Good luck!
Mira
  1 comentario
Henrik
Henrik el 5 de Dic. de 2014
Hi Mira
Thanks for the answer. I didn't like the idea of having to save the data in another file, so I tried some more Googling etc. My solution is not pretty, but it works. I'll edit it into my question.
Henrik

Community Treasure Hunt

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

Start Hunting!

Translated by