官术网_书友最值得收藏!

3.2 實例29:用importdata函數與textscan函數對txt文件讀寫

語法:

importdata(filenamedelimiter

其中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,%sdelimiter\n

>>fclose(fileID);

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

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

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

主站蜘蛛池模板: 文登市| 濮阳县| 甘泉县| 富民县| 安泽县| 阿拉善右旗| 浦东新区| 彝良县| 蓬安县| 瓦房店市| 莱芜市| 宝鸡市| 泗阳县| 玉山县| 宁阳县| 无为县| 黄浦区| 东平县| 龙游县| 疏勒县| 仪征市| 荆州市| 竹山县| 阿拉善左旗| 灌云县| 闻喜县| 福建省| 浮梁县| 滦平县| 黎平县| 胶州市| 定西市| 资阳市| 鄱阳县| 彭山县| 仙桃市| 巴彦淖尔市| 秀山| 喜德县| 稷山县| 高青县|