小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

[精] Matlab I/O 輸入輸出

 googsee 2011-03-09

董為國(guó):《深入淺出MATLAB7.x混合編程》

Matlab提供多種能夠進(jìn)行文件讀寫的函數(shù),這些函數(shù)是Matlab語(yǔ)言的一部分,并不需要任何額外的工具箱的支持。

文本文件

Matlab中對(duì)文件的讀寫函數(shù)可以分為2大類:高級(jí)函數(shù)低級(jí)函數(shù)。簡(jiǎn)單的說(shuō),高級(jí)函數(shù)的調(diào)用語(yǔ)法簡(jiǎn)單,方便使用;但是可定制性差,只適用某些特殊格式的文件類型,缺乏靈活性。

在實(shí)際的使用中,很多人會(huì)推薦這樣的一種選擇原則:在讀取文件時(shí),盡量使用高級(jí)函數(shù);在存寫文件時(shí)盡量使用低級(jí)函數(shù),因?yàn)楦呒?jí)函數(shù)存寫文件時(shí),文件的格式比較單一。

高級(jí)命令

常用的文本文件讀寫的高級(jí)函數(shù)包括以下8個(gè):

(1) 讀:load

load是Matlab中的一個(gè)內(nèi)置函數(shù)。其主要功能是從文本文件或者MAT文件中把數(shù)據(jù)輸入Matlab工作空間。

如果各行的列數(shù)不相等,會(huì)出錯(cuò)。

load的調(diào)用方式可以分為2種:

命令形式:

load bar.dat

函數(shù)形式:

[x] = load('bar.dat');

(2) 讀:importdata

適合從文本文件或者特殊格式的二進(jìn)制文件(比如.WAV等)中讀取數(shù)據(jù)。importdata可以讀取包含文字說(shuō)明的文件,可以使用用戶自定義的字符作為文件中每行各數(shù)據(jù)之間的分隔符,如不指定,自動(dòng)以空格作為分隔符。如果各行的列數(shù)不同的話,importdata不會(huì)終止執(zhí)行,而是會(huì)根據(jù)第一行的列數(shù)為準(zhǔn)來(lái)決定輸出矩陣的大小,所缺的列會(huì)以NaN代替。

(3) 讀:csvread

用來(lái)讀取用逗號(hào)隔開的數(shù)據(jù)文件。

(4) 讀:strread

(5) 讀:dlmread

文件中不能包含說(shuō)明文字。不過(guò)dlmread不但可以讀取以逗號(hào)分割的數(shù)據(jù)文件,也可以讀取那些用其它字符分割數(shù)據(jù)的文件。

(6) 讀:textread

通過(guò)調(diào)用一個(gè)名為dataread.dll的MEX文件實(shí)現(xiàn)的。比前面提到的幾個(gè)文件讀取高級(jí)函數(shù),textread同樣具有調(diào)用語(yǔ)法簡(jiǎn)單的優(yōu)點(diǎn),同時(shí)對(duì)文件讀取的可定制性更強(qiáng)。textread既能處理有固定格式的文件,也能處理無(wú)格式的文件,還能對(duì)文件每行的數(shù)據(jù)按列逐個(gè)讀取。通常被用來(lái)處理一些已知格式的文件。{姓名,等級(jí),X,Y,答案}

(7) 寫:save

save也是Matlab的一個(gè)內(nèi)置函數(shù),用來(lái)把當(dāng)前Matlab工作空間的一個(gè)或者多個(gè)變量存入外部文件。在默認(rèn)情況下,save命令以MAT格式存寫數(shù)據(jù),但也可以指定存寫的文本方式。

注意:save無(wú)法在文本文件中,保存復(fù)數(shù)變量。如果有復(fù)數(shù)時(shí),save只保存它們的實(shí)部。另外,對(duì)于結(jié)構(gòu)型變量,save只能保存結(jié)構(gòu)型標(biāo)量,而不能保存結(jié)構(gòu)型變量數(shù)組。

(8) 寫:dlmwrite


低級(jí)命令

這些命令和C語(yǔ)言里對(duì)文件的讀寫函數(shù)非常類似。操作過(guò)程一般包括:打開文件;讀寫文件;關(guān)閉文件。

常用的文件讀寫低級(jí)命令有如下7個(gè):

(1) fopen

fopen能夠打開文件,也能夠從打開的文件中獲得信息。默認(rèn)情況下,fopen以二進(jìn)制格式打開文件。

注意:如果文件打開模式里用“+”,如“a+t”、“w+t”等,對(duì)文件的讀和寫必須用fseek或者frewind隔開。

(2) fclose

文件打開、使用后最好關(guān)閉,以方便對(duì)該文件的其他操作。使用fopen打開文件以后,系統(tǒng)會(huì)把這個(gè)文件標(biāo)記為"正在使用";使用fclose會(huì)清除這個(gè)標(biāo)記,否則會(huì)影響到對(duì)文件的修改、刪除等操作。

(3) fgetl

能夠讀取指定文件中的一行內(nèi)容,但不包括新行分隔符。用fopen打開文件后,文件的讀取位置是文件開頭的地方,以后每次調(diào)用fgetl,這個(gè)讀取位置會(huì)自動(dòng)更新到下一行,一直到文件結(jié)尾的地方。

(4) fgets

fgets的功能和fgetl類似,都是讀取當(dāng)前文件讀取位置所對(duì)應(yīng)的下一行內(nèi)容。區(qū)別在于,fgets將包含該行的新行標(biāo)志。

(5) fscanf

fscanf具有更多的靈活性,能夠讀取有格式的文本文件。

注意:用%s讀取字符串后,其中的每個(gè)字符會(huì)被看成是返回的矩陣?yán)锏囊粋€(gè)元素。而且,%s會(huì)忽略文件中的空格鍵。如果需要讀取空格,則必須用%c。

(6) textscan

textscan是Matlab 7.0新增加的內(nèi)置函數(shù)。它能夠更為高效和靈活地讀取文本文件數(shù)據(jù),其和高級(jí)命令textread相似,但textcan能夠更好地處理大型文件。textscan能從文件的任何地方開始讀取數(shù)據(jù),對(duì)于數(shù)據(jù)的轉(zhuǎn)換,textscan提供了更多的選項(xiàng)。

注意:textscan讀取數(shù)據(jù)最大值uint32(4294967295),文件中相應(yīng)的數(shù)字如果大于這個(gè)數(shù),則被這個(gè)極限數(shù)字代替。

(7) fprintf

fprintf能夠以類似于ANSI C語(yǔ)言中的有關(guān)函數(shù)那樣按照用戶指定的格式把數(shù)據(jù)打印文本信息。根據(jù)調(diào)用參數(shù)的不同,fprintf可以在文件或者屏幕上輸出結(jié)果。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多