- MATLAB量化金融分析基礎與實戰
- 馬萌
- 842字
- 2020-05-28 17:52:08
3.2 實例29:用importdata函數與textscan函數對txt文件讀寫
語法:
importdata(′filename′,′delimiter′)
其中filename為文件名,delimiter為指定的單字符分隔符。如不指定分隔符,importdata函數會自動識別分隔符。
importdata函數可用于讀取txt文件,常用在以下幾種情況:
1)文件全部為數字且以唯一的單字符分隔符分割。
2)文件的首行或首列可以是字符或字符串但其他行必須是數字,分隔符必須是唯一的單字符。
3)文件中如果不含數字,分隔符會被忽略,文件會被讀入cell結構且每行存在一個cell單元中。
4)對于非以上類型的文件,可以通過指定空分隔符或文本中不存在的字符作為分隔符,這樣可以將文件逐行讀入并存入cell矩陣單元中。
例120:讀取全為數字且以空格分隔的“test1.txt”文件。
“test1.txt”文件內容:
123
456
命令行窗口內容:

讀取首行為字符串,其余皆為數字且以空格分隔的“test2.txt”文件。
“test2.txt”文件內容:
aa bb cc
11 22 33
命令行窗口輸入:

返回的ST結構體中,data用于存儲數值矩陣,textdata用于存儲字符或字符串,文件的第一行作為列抬頭存入colheaders中。如果文件首列是字符或字符串,文件的第一列會存入rowheaders。
例121:讀取內容全為數字且以′|′分隔的“test3.txt”文件。
“test3.txt”文件內容:
1|2|3
4|5|6
讀取文件內容。

或者由函數自動識別而不指定分隔符。

例122:讀取列數據類型相同且以′|′分隔的“test4.txt”文件。
“test4.txt”文件內容:1|a|b
2|c|d
可以通過importdata函數指定空分隔符將文件以原樣讀入。

推薦使用textscan函數讀入列類型相同的數據。

輸出的C為一個行cell,cell的每個元素讀取文件中的一列:如果該列為數字則為一個列向量而如果該列為字符或字符串則為一列cell。
表3-2 textscan函數的列類型轉換符

例123:讀取含有分隔符′|′的任意格式文件“test5.txt”。
可以通過強制指定文件讀取格式為字符串類型實現,則返回的均為cell類型。
“test5.txt”文件內容:
a|1|c
b|d|2
命令行窗口輸入,

例124:讀取任意格式文件“test6.txt”。
“test6.txt”文件內容:
this is a file@#$!
ASDFE#!Q@
以換行符為分隔符將文件中的每一行存入一個cell單元。
>>fileID=fopen(′test6.txt′);
>>C=textscan(fileID,′%s′,′delimiter′,′\n′)
>>fclose(fileID);

文件中不含數字,可以用importdata函數讀取,指定的分隔符會被忽略。

例125:利用fprintf函數將文本寫入“test7.txt”文件。

表3-3 fprintf函數文件操作類型
