reding specific elements from .txt file

5 views (last 30 days)
Hi
I want to read specific elements from .txt file. I am reading data from several files and they are having different no. of rows but same no. of columns. I want to read all the elements in 12th column and in rows which come after 10 the row.
So matrix which I am going to read will be a column matrix but of different length depending upon no. of rows in respective file.
  3 Comments
Nikhil CD
Nikhil CD on 22 Sep 2011
All are numbers, delimiter is comma(,).
For example( I am assuming data of 6 columns and 8 rows)
1,2.5,45,-5,3.25,0,13,6
2.5,86,25,-4,0,0,12.5,2
2.1,-5,1.5,2.3,0,0,2.45,25
1,2.5,45,-5,0,0,1.23,6
2.5,86,25,-4,0,0,2.5,2
2.1,-5,1.5,2.3,0,0,0.45,25
In above case I need elements: 1.23,2.5,0.45
But in other files no of rows may be different and accordingly no of elements will vary.( in data of 8*8 i will input 5 elements(starting from row4))
Nikhil CD
Nikhil CD on 22 Sep 2011
Change in last sentence...(in data of 8*6 I will need elements 5 elements(starting from row4))

Sign in to comment.

Accepted Answer

TAB
TAB on 23 Sep 2011
ReadCol=7;
ReadStartRow=4;
fh=fopen('test.txt');
txtcell=textscan(fh,'%s','delimiter','\n');
RowInFile=length(txtcell{1});
if(RowInFile<ReadStartRow)
error('No of rows in text file are less than as expected by you.');
end
MyData=zeros(RowInFile-ReadStartRow+1,1);
R=1;
for ro=ReadStartRow:RowInFile
Arr=cell2mat(textscan(txtcell{1}{ro},'%f','delimiter',','))';
Mydata(R,1)=Arr(ReadCol);
R=R+1;
end

More Answers (1)

TAB
TAB on 22 Sep 2011
StartRow=1;
EndRow=6;
StartCol=1;
EndCol=8;
if(StartRow>EndRow || StartCol>EndCol || any([StartRow EndRow StartCol EndCol]==0))
error('Indexing Error');
end
fh=fopen('YourFile.txt');
txtcell=textscan(fh,'%s','delimiter','\n');
if(length(txtcell{1})<EndRow)
error('No of rows in text file are less than as expected by you.');
end
R=1;
MyData=zeros(EndRow-StartRow+1,EndCol-StartCol+1);
for i=StartRow:EndRow
Arr=cell2mat(textscan(txtcell{1}{i},'%f','delimiter',','))';
Mydata(R,:)=Arr(1,StartCol:EndCol);
R=R+1;
end
  3 Comments
TAB
TAB on 23 Sep 2011
Sorry for misunderstanding your need.
Please see my next answer.
I am again confused, either you want to read 7th column or 6th column. I am considering it 7th.
Nikhil CD
Nikhil CD on 26 Sep 2011
Yes. Its Ok..I got your logic. I can do further changes needed.
Thank you for your answer.

Sign in to comment.

Categories

Find more on Data Import and Analysis in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!