首先, 要先用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
fscanf和sscanf類似,只是前者讀檔案,後者讀字串
至於textscan就更厲害了,可以整個文字檔直接讀
像s8.kiss2這個例子,我們想把表頭及後面的內容分別讀出來
1.讀表頭
>> fp = fopen('s8.kiss2');
>> c=textscan(fp,'.%c %d\n')
c =
[4x1 char] [4x1 int32]
>> c{1}
ans =
i
o
p
s
>> c{2}
ans =
4
1
20
5
2.讀內容
>> fp = fopen('s8.kiss2');
>> c=textscan(fp,'%s %s %s %s')
c =
{24x1 cell} {24x1 cell} {24x1 cell} {24x1 cell}
可以去看一下 c{1}, c{2}, c{3}, c{4}
當然前四個是表頭的部分,只有後面20個是我們要的!
沒有留言:
張貼留言