Read data from a tricky text file
    10 次查看(过去 30 天)
  
       显示 更早的评论
    
Dear all,
I would like to read numeric data from a file which has the following standard format:
1  (15, 16, 266, 251)
2  (16, 17, 267, 266)
3  (17, 18, 268, 267)
4  (18, 19, 269, 268)
5  (19, 20, 270, 269)
6  (20, 21, 271, 270)
7  (21, 22, 272, 271)
8  (22, 23, 273, 272)
9  (23, 24, 274, 273)
The data is tab separated and number of rows arbitrary. I would like to end up with a variable containing the values of the left-most column, and the data in the parentheses should be treated as a single vector per row.
e.g.:
>> data{1}
  {[1]}, {[15, 16, 266, 251]}
>> data{2}
  {[2]}, {[16, 17, 267, 266]}
As long as I can access the the data as two numeric columns, I'd be happy!
I have tried importdata(), dlmread() and fget methods. They all seem to return each row of data as a cell of characters.
Thanks in advance for the help!
Best regards,
Louis
0 个评论
采纳的回答
  per isakson
      
      
 2015-9-27
        
      编辑:per isakson
      
      
 2015-9-27
  
      Assuming "data in the parentheses" all have equal length. Why cell array? Isn't this good enough?
fid = fopen( 'cssm.txt' );
cac = textscan( fid, '%f%f%f%f%f', 'Delimiter', {'\t',','}  ...
            ,   'Whitespace',' ()', 'CollectOutput',true    );
fclose( fid );
num = cac{:};
>> num
num =
     1    15    16   266   251
     2    16    17   267   266
     3    17    18   268   267
     4    18    19   269   268
     5    19    20   270   269
     6    20    21   271   270
     7    21    22   272   271
     8    22    23   273   272
     9    23    24   274   273
>> num(2,2:end)
ans =
    16    17   267   266
where cssm.txt contains the data of your question.
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Large Files and Big Data 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

