![Matlab數(shù)據(jù)導(dǎo)入方法_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/18/524a5863-f269-4173-8d05-7d0ebfc10ef5/524a5863-f269-4173-8d05-7d0ebfc10ef51.gif)
![Matlab數(shù)據(jù)導(dǎo)入方法_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/18/524a5863-f269-4173-8d05-7d0ebfc10ef5/524a5863-f269-4173-8d05-7d0ebfc10ef52.gif)
![Matlab數(shù)據(jù)導(dǎo)入方法_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/18/524a5863-f269-4173-8d05-7d0ebfc10ef5/524a5863-f269-4173-8d05-7d0ebfc10ef53.gif)
![Matlab數(shù)據(jù)導(dǎo)入方法_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/18/524a5863-f269-4173-8d05-7d0ebfc10ef5/524a5863-f269-4173-8d05-7d0ebfc10ef54.gif)
![Matlab數(shù)據(jù)導(dǎo)入方法_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/18/524a5863-f269-4173-8d05-7d0ebfc10ef5/524a5863-f269-4173-8d05-7d0ebfc10ef55.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Matlab數(shù)據(jù)導(dǎo)入方法在編寫(xiě)一個(gè)程序時(shí),經(jīng)常需要從外部讀入數(shù)據(jù),或者將程序運(yùn)行的結(jié)果保存為文件。MATLAB使用多種格式打開(kāi)和保存數(shù)據(jù)。本章將要介紹 MATLAB中文件的讀寫(xiě)和數(shù)據(jù)的導(dǎo)入導(dǎo)出。13.1 數(shù)據(jù)基本操作本節(jié)介紹基本的數(shù)據(jù)操作,包括工作區(qū)的保存、導(dǎo)入和文件打開(kāi)。13.1.1 文件的存儲(chǔ)MATLAB支持工作區(qū)的保存。用戶(hù)可以將工作區(qū)或工作區(qū)中的變量以文件的形式保存,以備在需要時(shí)再次導(dǎo)入。保存工作區(qū)可以通過(guò)菜單進(jìn)行,也可以通過(guò)命令窗口進(jìn)行。1. 保存整個(gè)工作區(qū)選擇File菜單中的Save Workspace As命令,或者單擊工作區(qū)瀏覽器工具欄中的Save,可以將工作區(qū)中的變量保存為M
2、AT文件。2. 保存工作區(qū)中的變量在工作區(qū)瀏覽器中,右擊需要保存的變量名,選擇Save As,將該變量保存為MAT文件。3. 利用save命令保存該命令可以保存工作區(qū),或工作區(qū)中任何指定文件。該命令的調(diào)用格式如下: save:將工作區(qū)中的所有變量保存在當(dāng)前工作區(qū)中的文件中,文件名為 matlab.mat,MAT文件可以通過(guò)load函數(shù)再次導(dǎo)入工作區(qū),MAT函數(shù)可以被不同的機(jī)器導(dǎo)入,甚至可以通過(guò)其他的程序調(diào)用。 save('filename'):將工作區(qū)中的所有變量保存為文件,文件名由filename指定。如果filename中包含路徑,則將文件保存在相應(yīng)目錄下,否則默認(rèn)路徑為當(dāng)
3、前路徑。 save('filename', 'var1', 'var2', .):保存指定的變量在 filename 指定的文件中。 save('filename', '-struct', 's'):保存結(jié)構(gòu)體s中全部域作為單獨(dú)的變量。 save('filename', '-struct', 's', 'f1', 'f2', .):保存結(jié)構(gòu)體s中的指定變量。 save('-regexp', expr1,
4、expr2, .):通過(guò)正則表達(dá)式指定待保存的變量需滿(mǎn)足的條件。 save('., 'format'),指定保存文件的格式,格式可以為MAT文件、ASCII文件等。13.1.2 數(shù)據(jù)導(dǎo)入MATLAB中導(dǎo)入數(shù)據(jù)通常由函數(shù)load實(shí)現(xiàn),該函數(shù)的用法如下: load:如果matlab.mat文件存在,導(dǎo)入matlab.mat中的所有變量,如果不存在,則返回error。 load filename:將filename中的全部變量導(dǎo)入到工作區(qū)中。 load filename X Y Z .:將filename中的變量X、Y、Z等導(dǎo)入到工作區(qū)中,如果是MAT文件,在指定變量時(shí)可以使
5、用通配符“*”。 load filename -regexp expr1 expr2 .:通過(guò)正則表達(dá)式指定需要導(dǎo)入的變量。 load -ascii filename:無(wú)論輸入文件名是否包含有擴(kuò)展名,將其以ASCII格式導(dǎo)入;如果指定的文件不是數(shù)字文本,則返回error。 load -mat filename:無(wú)論輸入文件名是否包含有擴(kuò)展名,將其以mat格式導(dǎo)入;如果指定的文件不是MAT文件,則返回error。例13-1 將文件matlab.map中的變量導(dǎo)入到工作區(qū)中。首先應(yīng)用命令whos file查看該文件中的內(nèi)容:>> whos -file matlab.mat Name
6、160; Size Bytes Class A &
7、#160; 2x3 48 double array I_q 415x552x3 687240 uint8 a
8、rray ans 1x3 24 double array num_of_cluster 1x1 &
9、#160; 8 double arrayGrand total is 687250 elements using 687320 bytes將該文件中的變量導(dǎo)入到工作區(qū)中:>> load matlab.mat該命令執(zhí)行后,可以在工作區(qū)瀏覽器中看見(jiàn)這些變量,如圖13-1所示。圖13-1 導(dǎo)入變量后的工作區(qū)視圖接下來(lái)用戶(hù)可以訪問(wèn)這些變量。>> num_of_clusternum_of_cluster = 3MATLAB中,另一個(gè)導(dǎo)入數(shù)據(jù)的常用函數(shù)為impor
10、tdata,該函數(shù)的用法如下: importdata('filename'),將filename中的數(shù)據(jù)導(dǎo)入到工作區(qū)中; A = importdata('filename'),將filename中的數(shù)據(jù)導(dǎo)入到工作區(qū)中,并保存為變量A; importdata('filename','delimiter'),將filename中的數(shù)據(jù)導(dǎo)入到工作區(qū)中,以delimiter指定的符號(hào)作為分隔符;例13-2 從文件中導(dǎo)入數(shù)據(jù)。>> imported_data = importdata('matlab.mat')i
11、mported_data = ans: 1.1813 1.0928 1.6534 A: 2x3 double
12、; I_q: 415x552x3 uint8 num_of_cluster: 3與load函數(shù)不同,importdata將文件中的數(shù)據(jù)以結(jié)構(gòu)體的方式導(dǎo)入到工作區(qū)中。13.1.3 文件的打開(kāi)MATLAB中可以使用open命令打開(kāi)各種格式的文件,MATLAB自動(dòng)根據(jù)文件的擴(kuò)展名選擇相應(yīng)的編輯器。 需要注意的是open('filename.mat')和load('filename.mat')的不同,前者將filename.mat以結(jié)構(gòu)體的方式打開(kāi)在工作區(qū)中,后者將文件中的變
13、量導(dǎo)入到工作區(qū)中,如果需要訪問(wèn)其中的內(nèi)容,需要以不同的格式進(jìn)行。 例13-3 open與load的比較。>> clear>> A = magic(3);>> B = rand(3);>> saveSaving to: matlab.mat>> clear>> load('matlab.mat')>> AA = 8 1 6
14、; 3 5 7 4 9 2>> BB = 0.9501 0.4860 0.4565 0.2311 0.8913
15、; 0.0185 0.6068 0.7621 0.8214>> clear>> open('matlab.mat')ans = A: 3x3 double B: 3x3 double>> struc1=ans;>> struc1.Aans = 8
16、 1 6 3 5 7 4 9 2>> struc1.Bans = 0.9501 0.4860 0.4565
17、0.2311 0.8913 0.0185 0.6068 0.7621 0.821413.2 文本文件的讀寫(xiě)在上一節(jié)中介紹的函數(shù)和命令主要用于讀寫(xiě)mat文件,而在應(yīng)用中,需要讀寫(xiě)更多格式的文件,如文本文件、word文件、xml文件、xls文件、圖像文件和音視頻文件等。本節(jié)介紹文本文件(txt)的讀寫(xiě)。其他文件的讀寫(xiě),用戶(hù)可以參考MATLAB幫助文檔。MATLAB中實(shí)現(xiàn)文本文件讀寫(xiě)的函數(shù)如表13-1所示。表13-1 MA
18、TLAB中文本文件讀寫(xiě)函數(shù)函 數(shù)功 能csvread讀入以逗號(hào)分隔的數(shù)據(jù)csvwrite將數(shù)據(jù)寫(xiě)入文件,數(shù)據(jù)間以逗號(hào)分隔dlmread將以 ASCII 碼分隔的數(shù)值數(shù)據(jù)讀入到矩陣中dlmwrite將矩陣數(shù)據(jù)寫(xiě)入到文件中,以 ASCII 分隔textread從文本文件中讀入數(shù)據(jù),將結(jié)果分別保存textscan從文本文件中讀入數(shù)據(jù),將結(jié)果保存為單元數(shù)組下面詳細(xì)介紹這些函數(shù)。1. csvread、csvwritecsvread函數(shù)的調(diào)用格式如下: M = csvread('filename'),將文件filena
19、me中的數(shù)據(jù)讀入,并且保存為M,filename中只能包含數(shù)字,并且數(shù)字之間以逗號(hào)分隔。M是一個(gè)數(shù)組,行數(shù)與filename的行數(shù)相同,列數(shù)為filename列的最大值,對(duì)于元素不足的行,以0補(bǔ)充。 M = csvread('filename', row, col),讀取文件filename中的數(shù)據(jù),起始行為row,起始列為col,需要注意的是,此時(shí)的行列從0開(kāi)始。 M = csvread('filename', row, col, range),讀取文件filename 中的數(shù)據(jù),起始行為 row,起始列為col,讀取的數(shù)據(jù)由數(shù)組 range 指定,range
20、 的格式為:R1 C1 R2 C2,其中R1、C1為讀取區(qū)域左上角的行和列,R2、C2為讀取區(qū)域右下角的行和列。csvwrite 函數(shù)的調(diào)用格式如下: csvwrite('filename',M),將數(shù)組M中的數(shù)據(jù)保存為文件filename,數(shù)據(jù)間以逗號(hào)分隔。 csvwrite('filename',M,row,col),將數(shù)組M中的指定數(shù)據(jù)保存在文件中,數(shù)據(jù)由參數(shù) row和col指定,保存row和col右下角的數(shù)據(jù)。 csvwrite寫(xiě)入數(shù)據(jù)時(shí)每一行以換行符結(jié)束。另外,該函數(shù)不返回任何值。這兩個(gè)函數(shù)的應(yīng)用見(jiàn)下面的例子。例13-4 函數(shù)csvread和csvwr
21、ite 的應(yīng)用。本例首先將MATLAB的圖標(biāo)轉(zhuǎn)化為灰度圖,將數(shù)據(jù)存儲(chǔ)在文本文件中,再將其部分讀出,顯示為圖形。編寫(xiě)M文件,命名為immatlab.m,內(nèi)容為:% the example of functions csvread and csvwriteI_MATLAB= imread('D:matlab.bmp'); % read in the imageI_MATLAB= rgb2gray(I_matlab); % con
22、vert the image to gray imagefigure,imshow(I_matlab,'InitialMagnification',100); % show the imagecsvwrite('D:matlab.txt',I_matlab); % write the data into a text filesub_MATLAB= csvread('D:matlab.txt',100,100);% read in part of the datasub_MATLAB= uint8(
23、sub_matlab); % convert the data to uint8figure,imshow(sub_matlab,'InitialMagnification',100); % show the new image在命令窗口中運(yùn)行該腳本,輸出圖形如圖13-2所示。(a)
24、 (b)圖13-2 例13-3 的運(yùn)行結(jié)果該例中涉及到了少量的圖像處理內(nèi)容,超出本書(shū)的范圍,感興趣的讀者可以查閱 MATLAB幫助文檔中關(guān)于Image Processing Toolbox的介紹。2. dlmread、dlmwr
25、ite(個(gè)人覺(jué)得這個(gè)比較好用)dlmread函數(shù)用于從文檔中讀入數(shù)據(jù),其功能強(qiáng)于csvread。dlmread的調(diào)用格式如下: M = dlmread('filename') M = dlmread('filename', delimiter) M = dlmread('filename', delimiter, R, C) M = dlmread('filename', delimiter, range)其中參數(shù)delimiter用于指定文件中的分隔符,其他參數(shù)的意義與csvread函數(shù)中參數(shù)的意義相同,這里不再贅述。dlmre
26、ad函數(shù)與csvread函數(shù)的差別在于,dlmread函數(shù)在讀入數(shù)據(jù)時(shí)可以指定分隔符,不指定時(shí)默認(rèn)分隔符為逗號(hào)。dlmwrite函數(shù)用于向文檔中寫(xiě)入數(shù)據(jù),其功能強(qiáng)于csvwrite函數(shù)。dlmwrite函數(shù)的調(diào)用格式為: dlmwrite('filename', M),將矩陣M的數(shù)據(jù)寫(xiě)入文件filename中,以逗號(hào)分隔。 dlmwrite('filename', M, 'D'),將矩陣M的數(shù)據(jù)寫(xiě)入文件filename中,采用指定的分隔符分隔數(shù)據(jù),如果需要tab鍵,可以用“t”指定。 dlmwrite('filename', M,
27、 'D', R, C),指定寫(xiě)入數(shù)據(jù)的起始位置。 dlmwrite('filename', M, attribute1, value1, attribute2, value2, .),指定任意數(shù)目的參數(shù),可以指定的參數(shù)見(jiàn)下表。 dlmwrite('filename', M, '-append'),如果filename指定的文件存在,在文件后面寫(xiě)入數(shù)據(jù),不指定時(shí)則覆蓋原文件。 dlmwrite('filename', M, '-append', attribute-value list),敘寫(xiě)文件,并
28、指定參數(shù)。 dlmwrite 函數(shù)的可用參數(shù)如表13-2所示。表13-2 dlmwrite函數(shù)的可用參數(shù)參 數(shù) 名功 能delimiter用于指定分隔符newline用于指定換行符,可以選擇“pc”或者“unix”roffset行偏差,指定文件第一行的位置,roffset 的基數(shù)為 0coffset列偏差,指定文件第一列的位置,coffset 的基數(shù)為 0precision指定精確度,可以指定精確維數(shù),或者采用 c 語(yǔ)言的格式,如“%10.5f”3. textread,textscan當(dāng)文件的格式已知時(shí),可以利用textread函數(shù)和textscan函數(shù)讀入
29、。這里只介紹這兩個(gè)函數(shù)應(yīng)用的實(shí)例。例13-5 通過(guò)%讀入文件,按照原有格式讀取。文件的內(nèi)容為:Sally Level1 12.34 45 Yes在命令窗口中輸入:>> names, types, x, y, answer = textread('D:mat.txt','%s %s %f %d %s', 1)得到結(jié)果為:names = 'Sally'types = 'Level1'x =
30、 12.3400y = 45answer = 'Yes'例13-6 函數(shù)csvread和csvwrite的應(yīng)用Sally Level1 12.34 45 1.23e10 inf NaN YesJoe Level2 23.54 60 9e19 -inf 0.001 NoBill Level3 34.90 12 2e5 10 100 No>> fid = fopen('D:mat.txt');>> C = textscan(fid, '%s %s %f32 %d
31、8 %u %f %f %s');>> fclose(fid);13.3 低級(jí)文件I/O本節(jié)介紹一些基本的文件操作,這些操作如表13-3所示。表13-3 MATLAB的基本文件操作函 數(shù)功 能 fclose關(guān)閉打開(kāi)的文件 feof判斷是否為文件結(jié)尾 ferror文件輸入輸出中的錯(cuò)誤查找 fgetl讀入一行,忽略換行符
32、 fgets讀入一行,直到換行符 fopen打開(kāi)文件,或者獲取打開(kāi)文件的信息 fprintf格式化輸入數(shù)據(jù)到文件 fread從文件中讀取二進(jìn)制數(shù)據(jù) frewind將文件的位置指針移至文件開(kāi)頭位置 fscanf格式化讀入 fseek設(shè)置文件位置指針
33、60; ftell文件位置指針 fwrite向文件中寫(xiě)入數(shù)據(jù)下面重點(diǎn)介紹函數(shù)fprintf。該函數(shù)的調(diào)用格式如下:count = fprintf(fid, format, A, .),該語(yǔ)句將矩陣A及后面其他參數(shù)中數(shù)字的實(shí)部以 format 指定的格式寫(xiě)入到fid指定的文件中,返回寫(xiě)入數(shù)據(jù)的字節(jié)數(shù)。上面語(yǔ)句中,參數(shù)format由%開(kāi)頭,共可由4個(gè)部分組成,分別如下: 標(biāo)記(flag),為可選部分。 寬度和精度指示,為可選部分。 類(lèi)型標(biāo)志符,為可選部分。 轉(zhuǎn)換字符,為必需部分。1. 標(biāo)記標(biāo)記用于控制輸出的對(duì)齊方式,可以選擇的
34、內(nèi)容如表13-4所示。表13-4 標(biāo)記的可選內(nèi)容函 數(shù)功 能示 例負(fù)號(hào)(-) 在參數(shù)左側(cè)進(jìn)行判別 %-5.2d加號(hào)(+) 在數(shù)字前添加符號(hào) %+5.2d空格
35、 在數(shù)字前插入空格 % 5.2d0 在數(shù)字前插入0 %05.2d2. 寬度和精度指示用戶(hù)可以通過(guò)數(shù)字指定輸出數(shù)字的寬度及精度,格式如下: %6f,指定數(shù)字的寬度; %6.2f,指定數(shù)字的寬度及精度; %.2f,指定數(shù)字的精度。例13-6 fprintf函數(shù)寬度和精
36、度指示符示例。在命令窗口中輸入如下命令:>> file_type = fopen('D:type.txt','w');>> fprintf(file_h, '%6.2f %12.8fn', 1.2, -43.3);>> fprintf(file_h, '%6f %12fn', 1.2, -43.3);>> fprintf(file_h, '%.2f %.8fn', 1.2, -43.3);>> fclose(file_h)ans =
37、 0打開(kāi)該文件,其內(nèi)容為: 1.20 -43.300000001.200000 -43.3000001.20 -43.30000000從上述結(jié)果可以看出寬度和精度控制的效果。3. 轉(zhuǎn)換字符轉(zhuǎn)換字符用于指定輸出的符號(hào),可以選擇的內(nèi)容如表13-5所示。表13-5 格式化輸出的標(biāo)志符及意義標(biāo) 志 符意 義 %c輸出單個(gè)字符 %d輸出有符號(hào)十進(jìn)制數(shù) %e采用指數(shù)格式輸出,采用小寫(xiě)字母 e,如:3.1415e+00(續(xù)表) 標(biāo) 志 符意 義 %E采用指數(shù)格式輸出,采用大寫(xiě)字母 E,如:3.1415E+00 %f以定點(diǎn)數(shù)的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度高科技企業(yè)過(guò)橋資金借款合同
- 2025年度酒類(lèi)產(chǎn)品市場(chǎng)拓展采購(gòu)合作協(xié)議
- 2025年度農(nóng)村集體用地小產(chǎn)權(quán)房購(gòu)買(mǎi)協(xié)議書(shū)
- 2025年度舊房拆除工程安全施工及環(huán)保責(zé)任書(shū)
- 2025年度高科技項(xiàng)目合伙人分伙協(xié)議書(shū)
- 2025年度大型商業(yè)綜合體安全管理服務(wù)合同
- 2025年度綠色建筑勞務(wù)合作合同(光伏項(xiàng)目專(zhuān)用)
- 2025年度物流包裝貨物運(yùn)輸合同范本
- 2025年度綠色交通工程勞務(wù)內(nèi)部承包服務(wù)合同
- 二零二五年度老舊小區(qū)改造物業(yè)管理協(xié)議3篇
- 國(guó)庫(kù)集中支付培訓(xùn)班資料-國(guó)庫(kù)集中支付制度及業(yè)務(wù)操作教學(xué)課件
- 詩(shī)詞寫(xiě)作入門(mén)課件
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫(kù)含答案解析
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 植物之歌觀后感
- 空氣能熱泵安裝示意圖
- 建筑工程施工質(zhì)量驗(yàn)收規(guī)范檢驗(yàn)批填寫(xiě)全套表格示范填寫(xiě)與說(shuō)明
- 2020年中秋國(guó)慶假日文化旅游市場(chǎng)安全生產(chǎn)檢查表
- 昆明天大礦業(yè)有限公司尋甸縣金源磷礦老廠箐-小凹子礦段(擬設(shè))采礦權(quán)出讓收益評(píng)估報(bào)告
- 心有榜樣行有力量 -從冬奧冠軍徐夢(mèng)桃身上感受青春奮斗初中主題班會(huì)
- 七年級(jí)英語(yǔ)下冊(cè)閱讀理解10篇
評(píng)論
0/150
提交評(píng)論