2012年2月17日 星期五

MATLAB讀檔

使用MATLAB來讀寫檔案,可分以下幾種功能-

首先, 要先用fp=fopen( '檔名')將檔案開啟
之後就可以用fp指到目前檔案所讀到的地方
fclose(fp)則是關閉檔案

1.純粹給MATLAB自己用
   那就存成MAT檔就好
 用save和load 就可輕鬆恢復原資料格式
  
2.一般二進位檔或文字檔
    讀二進位檔: fread  可讀成任意格式進來
    讀文字檔: fgetl  一次讀一行
    格式化讀檔: fscanf
    格式化讀文字檔: textscan

以下舉例, 讀 's8.kiss2'


(左邊灰色底的數字代表行數,不是原文字檔內容)
先fp=fopen('s8.kiss2')開啟檔案
若我們用fread(fp) 會讀進
ans =
    10
    46
   105
    32
    52
    32
.....
分別代表原字元的 ascii碼
10='\n'  46='.'  105='i'   32=' ' 52='4' ....

若用fread(fp,'*char')則會把內容以char讀出來 ('*char'代表一堆字元)
ans =

.
i

4
...
 若用fread(fp,'bit4=>int8') 則代表把讀進的每四個位元轉成一個8位元整數
所以,基本上fread是比較不管妳文字黨內容為何,這也是為何說它適合讀二進位檔


fgetl則是一行一行讀進來, 再解讀進來的每一行字串
如:
>>s=fgetl(fp); '第一行空白就不解讀了
>>s=fgetl(fp)
s =
.i 4
>> sscanf(s,'.%c %d')
ans =
   105
     4
就讀到i的ascii碼(105)和數字4