作者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