MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Asked by Adelyn Luu on 26 Feb 2013

Hi, I have a text file with header, I need to import the file to matlab and to use numeric data. The numeric data in a line is separated by a ",". The file is as following Thanks Adelynne

base shear Analysis Series = cyclic2 (cyclic2) Load Case = [2] = [1] + cyclic 0,-2.980232E-08 0.1,-24.82325 0.2,-87.0501 0.3,-75.9906 0.4,86.35868 0.5,281.4871 0.6,417.2569 0.7,521.8102 0.8000001,622.5663 0.9,711.8201 1,785.7328 1.1,838.6344 1.2,863.1584 1.3,857.4628 1.4,817.3618 1.5,700.1636

*No products are associated with this question.*

Answer by Jing on 26 Feb 2013

Accepted answer

The functions that would be most helpful are 'fopen' and 'textscan'.

fid=fopen('yourtext.txt'); cdata=textscan(fid,'%f %f','delimiter',','); fclose(fid);

Show 2 older comments

Adelyn Luu on 26 Feb 2013

thank guys, but according to suggestion from Jing, I will get cdata with the numeric data. However, how can I use the numer from cdata, for exemple, plot a graph between cdata(1,1) and cdata(1,2)?

Jing on 26 Feb 2013

just use textscan, and tell it you have how many header lines using HeaderLines options. Read Isakson's answer below...

per isakson on 26 Feb 2013

cdata is a cell array. Read on **cell array** in the on-line help. And try

plot( cdata{1}, cdata{2} )

Answer by per isakson on 26 Feb 2013

... but don't forget the header

fid=fopen('yourtext.txt'); cdata=textscan(fid,'%f%f','delimiter',',', 'HeaderLines', 3 ); fclose(fid);

Answer by Azzi Abdelmalek on 26 Feb 2013

fid = fopen('file.txt'); line1 = fgetl(fid); res={line1}; while ischar(line1) line1 = fgetl(fid); res{end+1} =line1 end fclose(fid); res(end)=[] data=res(4:end) a=cellfun(@(x) regexp(x,',','split'),data,'un',0) x1=str2num(char(cellfun(@(x) x{1},a,'un',0)')) x2=str2num(char(cellfun(@(x) x{2},a,'un',0)'))

Answer by Muthu Annamalai on 26 Feb 2013

z=textread('filename.dat','%s','delimiter','\n') z=z(4:end) q=regexp(z,',','split') data = reshape(str2double([q{:}]),2,16)'

Answer by Miroslav Balda on 26 Feb 2013

The simplest way to read such data is in using the function txt2mat fro the File Exchange:

www.mathworks.com/matlabcentral/fileexchange/18430

Should the name of your data be `Adely.txt` , the following statement does the task:

A = txt2mat('Adelyn.txt','InfoLevel',0);

## 0 Comments