MATLAB經典教程第六章_程序接口_第1頁
MATLAB經典教程第六章_程序接口_第2頁
MATLAB經典教程第六章_程序接口_第3頁
MATLAB經典教程第六章_程序接口_第4頁
MATLAB經典教程第六章_程序接口_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第六章 文件IO&程序接口n文件IO 高級例程 低級例程n編程示例n程序接口6.1 文件IO數據導入數據導入/導出導出:MATLAB提供了強大的提供了強大的數據處理數據處理能力,但是在數能力,但是在數據處理之前,可能需要據處理之前,可能需要導入數據導入數據,處理完之后,可能需,處理完之后,可能需要要導出數據導出數據。 例子例子: 有一有一excel文件(文件(oilprice_simple.xls)存放存放了石了石油價格的數據,想要繪圖顯示時間油價格的數據,想要繪圖顯示時間-價格曲線,如何處理?價格曲線,如何處理?Note:繪圖等都沒有問題了,但是數據如何從:繪圖等都沒有問題了,但是數

2、據如何從excel導入導入到到matlab環境?環境?6.1 文件IOMatlab提供了如下文件讀寫的方式:提供了如下文件讀寫的方式:1)高級例程高級例程: matlab特有的特有的mat文件文件 指令指令: save、load;2) 低級例程低級例程: 一般的二進制文件一般的二進制文件 指令:指令:fopen、fread、fwrite、fclose3)其他常見文件類型的操作其他常見文件類型的操作: excel文件、圖像、視頻文件、圖像、視頻avi等;等;6.1 文件IO Mat文件格式文件格式:文件頭部文件頭部+變量名變量名+變量數據變量數據。1)頭部)頭部:包括:包括MATLAB版本信息、

3、使用的操作系統平臺和文件創版本信息、使用的操作系統平臺和文件創建時間。建時間。2)數據)數據:按照數據類型、數據長度和數據三個部分保存:按照數據類型、數據長度和數據三個部分保存的。的。 數據長度數據類型數據長度數據類型描述文字(124字節)標識版本6.1 文件IO6.1.1 高級例程高級例程 1)save: 將當前工作空間中的變量將當前工作空間中的變量保存保存成成MAT文件文件, 2)load: 將將MAT文件文件中的數據中的數據導入導入到到MATLAB的工作空間中。的工作空間中。 note:load和和save指令不僅能夠加載和保存指令不僅能夠加載和保存MAT格式格式的數據文件,而且還能夠加

4、載一般的文本格式文件。的數據文件,而且還能夠加載一般的文本格式文件。 save指令基本語法:指令基本語法: 1)save filename var1 var2. 將工作空間中的變將工作空間中的變 量量var1、var2等保存到指定文件等保存到指定文件中;中;2)save(filename,.) save指令的函數格式用法指令的函數格式用法 例子:創建一個例子:創建一個magic矩陣,并保存。矩陣,并保存。 save指令指令 例子例子:創建一個:創建一個magic矩陣矩陣A,求其逆矩陣,求其逆矩陣B,將,將A、B保存到保存到magic.mat文件中去。文件中去。Code(save_load_ex

5、am.m)magicMat=magic(4);magicInv=inv(magicMat);save magic.mat magicMat magicInvNote: save指令后不用加分號指令后不用加分號“;”。 load指令:指令: save-保存保存(write);load載入載入(read) load指令的基本語法:指令的基本語法:1)load filename 將指定文件中將指定文件中所有所有的變量加載到當前的工作空間的變量加載到當前的工作空間2)load filename var1 var2 . 將指定文件中將指定文件中指定指定的變量加載到當前工作空間的變量加載到當前工作空間 l

6、oad指令:指令: 例子例子:將:將magic.mat載入載入matlab workspace。 code: (save_load_exam.m) load magic.mat disp(magicMat); disp(magicInv); 6.1 文件IO6.1.2 文本文件操作文本文件操作 針對其他常用的文件格式(針對其他常用的文件格式(非非mat文件文件)。)。6.1 文件IO例子例子: 從從excel文件讀取石油價格數據文件讀取石油價格數據,并保存到并保存到mat文件。文件。Code (oil_price_process.m)fnm=oilprice_simple.xls;dat=xl

7、sread(fnm); %讀取對應的xls文件year=dat(:,1);pday=dat(:,2);pnow=dat(:,3);save oilprice.mat year pday pnow; 6.1 文件IO6.1.2 低級例程低級例程 底層的文件操作底層的文件操作,包括基本的,包括基本的open、close、read、write。1) 打開文件打開文件 fid = fopen(filename, flag);其中,其中,flag為控制文件讀寫的標識符,它的取值可以為為控制文件讀寫的標識符,它的取值可以為 * r表示打開的文件進行表示打開的文件進行讀讀的操作。的操作。 * w表示打開的文

8、件進行表示打開的文件進行寫寫的操作,若文件不存在則的操作,若文件不存在則創建新的文件。創建新的文件。 6.1 文件IO6.1.3 低級例程低級例程1) 打開文件打開文件 note:1)若能夠成功地打開文件,則)若能夠成功地打開文件,則fid為非負的整數,為非負的整數,否則為否則為-1。 2)關閉文件:)關閉文件: status = fclose(fid)若函數運行成功,則若函數運行成功,則status為為0,否則為,否則為-1。 3) 讀寫數據讀寫數據 MATLAB提供了兩大類低級文件提供了兩大類低級文件I/O函數進行文件內容函數進行文件內容的讀寫:的讀寫: 1)二進制文件讀寫函數二進制文件讀

9、寫函數 2)文本文件讀寫函數文本文件讀寫函數 note:底層例程類似:底層例程類似c語言。語言。6.1 文件IO6.1.4 其他類型文件的操作其他類型文件的操作 1)圖像圖像: imread、imwrite等等 2)視頻視頻6.1 文件IO6.1.4 例子例子 例子例子:最簡單的辦法是使用界面導入向導,打開文件最簡單的辦法是使用界面導入向導,打開文件菜單中的導入數據而后按提示操作。菜單中的導入數據而后按提示操作。Matlab支持的主要數支持的主要數據文件類型和對應函數如下:據文件類型和對應函數如下: 6.1 文件IOn導入文本文件導入文本文件 文本文件需要具備統一的行列模式,使用分隔符作為數據

10、項間隔,這些分隔符包括空格、逗號、tab、分號或其它。數據文件可能附帶標題行和行列頭標簽。 n數值數據數值數據 對于數值數據可以直接使用load函數裝載,例如my_data.txt中數據如下: 1 2 3 4 5 6 7 8 9 10 命令A = load(my_data.txt)裝載該文本文件數據。 如果數值數據使用其它分隔符,可以使用dlmread讀入,假設my_data.txt中數據如下: 7.2;8.5;6.2;6.6 5.4;9.2;8.1;7.2 命令A = dlmread(my_data.txt, ;)讀入該數據。 n包含行列標簽的數值數據包含行列標簽的數值數據 例如: Grad

11、e1 Grade2 Grade3 78.8 55.9 45.9 99.5 66.8 78.0 89.5 77.0 56.7 fid = fopen(grades.dat, r); grades = textscan(fid, %f %f %f, 3, headerlines, 1); fclose(fid); n包含字符和數值的混合數據包含字符和數值的混合數據 n使用textread函數讀入。它可以按列讀取ascii 文件中的元素,每一列中可能含有不同的數據類型。這函數讀取其他程序生成的數據表時非常地有用。n這個命令的形式如下na, b, c, . = textread(filename, f

12、ormat, n)n其中filename 代表要打開的文件的名字,format 是用于每一行數據類型的字符串,n 代表要讀取的行數(如果沒有n,則這個命令將讀完這個文件)。格式化字符串與函數fprintf 格式化描述的字符串相同。注意輸出參數的個數必須與你讀取的列數相區配。n例如,假設文件test_input.dat 包含下列數據nJames Jones O+ 3.51 22 YesnSally Smith A+ 3.28 23 NOn這些數據用下面的函數讀取一系列的數組。nfirst, last, blood, gpa, age, answer = textread(test_input.d

13、at,%s %s %s %f %d %s)n當這個函數被運行時產生如下結果nfirst =nJamesnSallynlast =nJonesnSmithblood =O+A+gpa =3.51003.2800age =2223answer =Yes導出文本文件導出文本文件 nsave函數 A = 1 2 3 4 ; 5 6 7 8 ; save my_data.out A ASCII dlmwrite函數 dlmwrite(my_data.out,A, ;) nxlsinfo獲得文件信息獲得文件信息 使用命令type, sheets = xlsfinfo(filename)返回文件類型type

14、和工作表信息。如:type, sheets = xlsfinfo(tempdata.xls) nXlswrite導出數據導出數據 d = Time, Temp; 12 98; 13 99; 14 97 命令xlswrite(tempdata.xls, d, Temperatures, E1)將單元格數組d的數據寫出至tempdata.xls文件,新建工作表Temperatures,從該工作表的E1單元格開始寫入。 6.1 文件IO小結:小結:文件文件IO關注的是數據的導入與導出的問題;關注的是數據的導入與導出的問題;Matlab特有的文件格式是特有的文件格式是.mat文件,通過文件,通過sav

15、e load指令指令可以讀寫文件;可以讀寫文件;針對常用的文件格式,比如圖像針對常用的文件格式,比如圖像(bmp/jpg),excel文件文件等等matlab提供了高級例程;提供了高級例程;Matlab提供了從磁盤文件或剪貼簿轉載數據至工作區(數據導入)和將工作區變量存 入磁盤文件(數據導出)的多種途徑。 6.2 應用程序接口Matlab與與c/c+的混合編程:的混合編程: 根據根據主程序框架主程序框架的語言類型劃分:的語言類型劃分: a)matlab中調用中調用c/c+ 編寫編寫mex文件文件; b)c/c+中調用中調用matlab i)matlab計算引擎計算引擎 ii)第三方組件:)第三方組件:matcom iii)com組件組件:新版本的:新版本的matlab的功能。的功能。6.2 應用程序接口6.2.1 mex文件文件1)在)在MATLAB中可調用的中可調用的C或或Fortran語言程序語言程序稱為稱為MEX文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論