Read data from a tricky text file
2 次查看(过去 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 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!