作者hyhjcjy (翊玥)
看板MATLAB
标题[问题]读txt档里的数值转成mat
时间Mon Oct 31 14:03:14 2011
请问如果我的txt档开头有一些文字,下面是表格式的数值
我只想要把数值存成mat,但skip掉上面的文字该怎麽做呢
例如:
?分??(微秒): 100000 (USB2+H04873)
平均次?: 1 (USB2+H04873)
平滑度: 0 (USB2+H04873)
去除暗噪?: 否 (USB2+H04873)
使用??信?/?: 否 (USB2+H04873)
?子暗噪?校正: 否 (USB2+H04873)
?散光校正: 否 (USB2+H04873)
>>>>>Begin Processed Spectral Data<<<<<
339.27 571.74
339.65 571.74
340.03 571.74
340.41 456.49
340.79 402.25
341.18 399.99
341.56 445.19
341.94 393.21
342.32 372.87
>>>>>End Processed Spectral Data<<<<<
就是我只要黄色的数值被读成mat档,可以做到吗?
因为要把好几笔这种file的data结合做运算,一个一个复制到excel太麻烦了
想看看MATLAB能不能直接把数值挑出来
谢谢回答> <
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.27.164
1F:推 youmu:我都用 fgetl这个指令跳到下一行 再用fscanf这种白痴方法 10/31 14:21
2F:→ youmu:要跳几行就fgetl几次 10/31 14:22
3F:→ hyhjcjy:对不起,可以再说详细一点吗,不太会用@@ 10/31 14:44
4F:→ hyhjcjy:我从前面的文章找到一个方法了! 先把所有的data存在cell里 10/31 15:12
5F:→ hyhjcjy:type再把cell里的string转回number 10/31 15:14
6F:→ hyhjcjy:↑多打了type 10/31 15:14
7F:→ hyhjcjy:CellText = textread('r2_rr00.txt','%s','whitespace','\ 10/31 15:15
8F:→ hyhjcjy:t\n'); 10/31 15:15
9F:→ hyhjcjy:values = CellText(18:4113,:); 10/31 15:16
10F:→ hyhjcjy:cellfun(@str2num,values); 10/31 15:16
11F:→ hyhjcjy:还是谢谢youmu大大哦 :) 10/31 15:18
12F:→ hyhjcjy:如果你要再教我怎麽用你的写法 我也很还是想知道哦:) 10/31 15:19
13F:→ abc01251:[x y] = textread('xx.txt','%f %f','headerlines',7); 10/31 17:34
14F:→ abc01251:不知道这样可不可以达成 10/31 17:34
15F:→ abc01251:只是读出来 两排会分别到 x y 加个 data=[x y]; 就OK了 10/31 17:35
16F:→ hyhjcjy:abc01251大大,这样前面的文字会无法读取而error 10/31 20:19
17F:→ hyhjcjy:youmu大大提供的方法我懂了!! 满简单的 10/31 20:20
18F:→ hyhjcjy:fid = fopen(filename); 10/31 20:22
19F:→ hyhjcjy:for k = 1:17 10/31 20:22
20F:→ hyhjcjy:fgetl(fid); % 舍去列 10/31 20:22
21F:→ hyhjcjy:end 10/31 20:22
22F:→ hyhjcjy:values = fscanf(fid,'%f %f'); 10/31 20:23
23F:→ hyhjcjy:不过要自己重新排列就是了 10/31 20:24
24F:→ hyhjcjy:我不太懂fscanf写几个%f有什麽差别,也不会变成两栏呀@@ 10/31 20:35
25F:→ abc01251:所以 >><< 这个也在文件内容罗!? 10/31 23:10
26F:→ abc01251:两个 %f 是因为 你一行里面有两个数字 10/31 23:11
27F:→ youmu:fscanf(fid,'%f %f',[x y]); 最後面填上你的矩阵大小,就会 11/01 21:00
28F:→ youmu:帮你排好了,不用再重排! 11/01 21:00