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

1.5 文件操作

文件操作是一種重要的輸入/輸出方式,即從數據文件讀取數據或將結果寫入數據文件。MATLAB提供了一系列低層輸入/輸出函數,專門用于文件操作。

1.5.1 文件的打開與關閉

1.打開文件

在讀寫文件之前,必須先用fopen函數打開或創建文件,并指定對該文件進行的操作方式。fopen函數的調用格式為:

說明:fid用于存儲文件句柄,如果返回的句柄值大于0,則說明文件打開成功。文件名用字符串形式,表示待打開的數據文件。常見的打開方式如下。

● ′r′:只讀方式打開文件(默認的方式),該文件必須已存在。

● ′r+′:讀寫方式打開文件,打開后先讀后寫。該文件必須已存在。

● ′w′:打開后寫入數據。該文件已存在則更新,不存在則創建。

● ′w+′:讀寫方式打開文件。先讀后寫。該文件已存在則更新,不存在則創建。

● ′a′:在打開的文件末端添加數據。文件不存在則創建。

● ′a+′:打開文件后,先讀入數據再添加數據。文件不存在則創建。

另外,在這些字符串后添加一個t,如′rt′或′wt+′,則將該文件以文本方式打開;如果添加的是b,則以二進制格式打開,這也是fopen函數默認的打開方式。

2.關閉文件

當文件進行完讀、寫等操作后,應及時關閉文件,以免數據丟失。關閉文件用fclose函數,調用格式為:

說明:該函數關閉fid所表示的文件句柄。sta表示關閉文件操作的返回值,若關閉成功,返回0,否則返回-1,通常默認sta。如果要關閉所有已打開的文件用fclose(′all′)。

1.5.2 二進制文件的讀寫操作

1.寫二進制文件

fwrite函數按照指定的數據精度將矩陣中的元素寫入到文件中。其調用格式如下:

說明:COUNT返回所寫的數據元素個數(可缺省),fid 為文件句柄,A 用來存放寫入文件的數據,precision 代表數據精度,常用的數據精度有 char、uchar、int、long、float、double等。默認數據精度為uchar,即無符號字符格式。

例1-18】 將一個二進制矩陣存入磁盤文件中。

2.讀二進制文件

fread函數可以讀取二進制文件的數據,并將數據存入矩陣。其調用格式為:

說明:A是用于存放讀取數據的矩陣、COUNT是返回所讀取的數據元素個數、fid 為文件句柄、size為可選項,若不選用則讀取整個文件內容;若選用 size,則可以是下列值:N(讀取N個元素到一個列矢量)、[M,N](讀M行N列的數據到M×N的矩陣中,數據按列存放)。precision用于控制所寫數據的精度,其形式與fwrite函數相同。

例1-19】 將上例數據文件中的前5個數據讀入到矩陣B中。

注意:矩陣在內存中是按列存放的,所以,存入文件的行矢量讀出后,變成了列矢量。在進行文件操作時,一定要小心,必要時可把矩陣轉置。

1.5.3 聲音文件的讀寫操作

1.讀聲音文件

audioread函數可以讀取擴展名為wav、wma、mp3的聲音文件,并按指定格式存入矩陣。其調用格式如下:

說明:其中Y為矩陣,用來存放讀取的聲音數據,矩陣的每一列代表一個單獨的數據通道(立體聲數據被指定為一個具有兩列的矩陣),FS 是返回的采樣頻率,FILE 為包括擴展名的聲音文件。

2.寫聲音文件

audiowrite函數可以將聲音數據按指定格式寫入到文件中(擴展名為wav、wma、mp3等)。其調用格式如下:

說明:其中Y為矩陣,代表準備寫入文件的聲音數據、FS 為采樣頻率(默認時為8000Hz)、FILENAME 為聲音文件名。

例1-20】 搜索Windows下的聲音文件 ding.wav或使用 Windows 提供的錄音機錄制一段自己的語音(時間控制在1~3s,將文件另存在硬盤上并更名),使用 wavread函數讀入,觀察其采樣頻率和數據位數;將采樣頻率改為8000Hz和數據位數改為8位后,保存到 E 盤并播放該聲音文件。

注意:使用Windows提供的錄音機錄制的聲音文件的擴展名為 wma,采樣頻率為44100Hz。

1.5.4 圖像文件的讀寫操作

1.讀圖像文件

imread函數用于從文件中讀入圖像,圖像文件的格式可以是bmp(Windows位圖文件)、hdf(層次數據格式圖像文件)、jpg或jpeg(壓縮圖像文件)、pcx(Windows畫筆圖像文件)、tif或tiff(標簽圖像格式文件)等。其函數格式如下:

說明:A為無符號8位整數(uint8)矩陣。如果讀入文件為灰度圖像,則 A 為二維矩陣;如果讀入圖像為真彩色RGB圖像,則A為三維矩陣。

說明:map為雙精度浮點數(double),其值在0~1,表示圖像的顏色值。

2.寫圖像文件

imwrite函數用于將圖像寫入文件,圖像格式同imread函數。其函數格式如下:

說明:與imread函數相同。

說明:map表示圖像顏色格式,其他與imread函數相同。

例1-21】 讀入文件名為cameraman.tif的圖像文件,改文件名為image、改格式為jpg后,存入D盤。

打開D盤,可以看到該圖像文件的圖標。

主站蜘蛛池模板: 连城县| 名山县| 德钦县| 梅河口市| 南溪县| 三台县| 聊城市| 民权县| 宝坻区| 南开区| 商南县| 鄱阳县| 绍兴县| 读书| 宁化县| 海阳市| 紫阳县| 阳曲县| 泸水县| 万荣县| 禹州市| 板桥市| 博野县| 景东| 丰城市| 轮台县| 鞍山市| 平阴县| 柘荣县| 邹平县| 潍坊市| 华安县| 剑阁县| 南丹县| 师宗县| 时尚| 兴义市| 瓮安县| 陇西县| 当雄县| 乐昌市|