importdata no recognizing column headers

I am using MATLAB 2012a on Windwos 7. I am trying to import a tab separated text file. The problem is that importdata does not recognize columnheaders if the length of the data is different from the length of the columnheaders. The program I am using is outputting an extra header eventhough I have no data for it. I can't change the output and there are about 100 columns. i want to be able to search for a specific column to get the right index to read only the relevant data. Here is a small example of the text file (spaces are tabs). so in this example, there are 4 headers, but only 3 columns of data. Matlab does not recognize the column headers and won't put them into columns.
header1 header2 header2 header4
1 2 3
2 3 2
3 4 5
1 2 3
3 4 5
2 4 5
any solutions out there? I don't want to go into each file to delete the extra columns (it does work but I have hundreds of these outputs). One solution would be to go into the text data and rewrite the columns that way. but I'm hoping there is an easier and faster method out there...

댓글 수: 2

Azzi Abdelmalek
Azzi Abdelmalek 2014년 12월 1일
Do you want to read the headers (all of them)
hxh103
hxh103 2014년 12월 1일
yes, I would like to read all available headers

댓글을 달려면 로그인하십시오.

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 12월 1일

2 개 추천

s=importdata('file.txt')
h=strsplit(s.textdata{:})
data=s.data
n=size(data,2)
out=[h(1:n);num2cell(data)]

댓글 수: 3

hxh103
hxh103 2014년 12월 1일
편집: hxh103 2014년 12월 1일
Hi, thanks for the quick response. I have Matlab 2012a which does not have strsplit as a default function. I have a strsplit function that I got online, but it does not have tabs as a delimiter.
Any other suggestions for splitting strings with tabs? I guess i could try to regexp for tabs with spaces and then use my strsplit. Seems a bit roundabout way to do it though.
EDIT: this works for me, forgot about the 'split' in regexp
h=regexp(s.texdata{:},'\t','split')
h=regexp(s.textdata,'\S+','match');
h=h{:}
hxh103
hxh103 2014년 12월 1일
편집: hxh103 2014년 12월 1일
Sorry, I forgot to mention there are other text above the column headers. so the above code won't work as it doesn't give the correct headers. The following code works for me
s=importdata('file.txt')
t=s.textdata{end,1}; %assumes your header is in the last row
h=regexp(t,'\t','split')
h= 'header1' 'header2' 'header3' 'header4'
Cheers, hope this helps someone else out in similar situation.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Workspace Variables and MAT Files에 대해 자세히 알아보기

태그

질문:

2014년 12월 1일

편집:

2014년 12월 1일

Community Treasure Hunt

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

Start Hunting!

Translated by