|
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ū)中的變量保存為MAT文件。 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)前路徑。 ● 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, expr2, ...):通過(guò)正則表達(dá)式指定待保存的變量需滿足的條件。 ● 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í)可以使用通配符“*”。 ● 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 Size Bytes Class A 2x3 48 double array I_q 415x552x3 687240 uint8 array ans 1x3 24 double array num_of_cluster 1x1 8 double array Grand 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_cluster num_of_cluster = 3 MATLAB中,另一個(gè)導(dǎo)入數(shù)據(jù)的常用函數(shù)為importdata,該函數(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') imported_data = ans: [1.1813 1.0928 1.6534] A: [2x3 double] 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ū)中,后者將文件中的變量導(dǎo)入到工作區(qū)中,如果需要訪問(wèn)其中的內(nèi)容,需要以不同的格式進(jìn)行。 例13-3 open與load的比較。 >> clear >> A = magic(3); >> B = rand(3); >> save Saving to: matlab.mat >> clear >> load('matlab.mat') >> A A = 8 1 6 3 5 7 4 9 2 >> B B = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 >> clear >> open('matlab.mat') ans = A: [3x3 double] B: [3x3 double] >> struc1=ans; >> struc1.A ans = 8 1 6 3 5 7 4 9 2 >> struc1.B ans = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 |
|
|
來(lái)自: walisef > 《數(shù)學(xué)建?!?/a>