程序接口課件_第1頁
程序接口課件_第2頁
程序接口課件_第3頁
程序接口課件_第4頁
程序接口課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第六章文件IO&程序接口文件IO高級例程低級例程編程示例程序接口1.6.1文件IO數(shù)據(jù)導(dǎo)入/導(dǎo)出: MATLAB提供了強(qiáng)大的數(shù)據(jù)處理能力,但是在數(shù)據(jù)處理之前,可能需要導(dǎo)入數(shù)據(jù),處理完之后,可能需要導(dǎo)出數(shù)據(jù)。

例子:有一excel文件(oilprice_simple.xls)存放了石油價格的數(shù)據(jù),想要繪圖顯示時間-價格曲線,如何處理?Note:繪圖等都沒有問題了,但是數(shù)據(jù)如何從excel導(dǎo)入到matlab環(huán)境?2.6.1文件IOMatlab提供了如下文件讀寫的方式:1)高級例程:matlab特有的mat文件

指令:save、load;2)低級例程:一般的二進(jìn)制文件指令:fopen、fread、fwrite、fclose3)其他常見文件類型的操作:

excel文件、圖像、視頻avi等;3.6.1文件IO

Mat文件格式:文件頭部+變量名+變量數(shù)據(jù)。1)頭部:包括MATLAB版本信息、使用的操作系統(tǒng)平臺和文件創(chuàng)建時間。2)數(shù)據(jù):按照數(shù)據(jù)類型、數(shù)據(jù)長度和數(shù)據(jù)三個部分保存的。

4.6.1文件IO6.1.1高級例程1)save:將當(dāng)前工作空間中的變量保存成MAT文件,

2)load:將MAT文件中的數(shù)據(jù)導(dǎo)入到MATLAB的工作空間中。note:load和save指令不僅能夠加載和保存MAT格式的數(shù)據(jù)文件,而且還能夠加載一般的文本格式文件。5.

save指令基本語法:1)savefilenamevar1var2......

將工作空間中的變量var1、var2等保存到指定文件中;2)save('filename',......)

save指令的函數(shù)格式用法例子:創(chuàng)建一個magic矩陣,并保存。

6.

save指令例子:創(chuàng)建一個magic矩陣A,求其逆矩陣B,將A、B保存到magic.mat文件中去。Code(save_load_exam.m)magicMat=magic(4);magicInv=inv(magicMat);savemagic.matmagicMatmagicInvNote:save指令后不用加分號“;”。

7.

load指令:

save-保存(write);load—載入(read)load指令的基本語法:1)loadfilename

將指定文件中所有的變量加載到當(dāng)前的工作空間2)loadfilenamevar1var2......將指定文件中指定的變量加載到當(dāng)前工作空間8.

load指令:例子:將magic.mat載入matlabworkspace。

code:(save_load_exam.m)

loadmagic.matdisp(magicMat);disp(magicInv);

9.6.1文件IO6.1.2文本文件操作

針對其他常用的文件格式(非mat文件)。10.6.1文件IO例子:

從excel文件讀取石油價格數(shù)據(jù),并保存到mat文件。Code

(oil_price_process.m)fnm='oilprice_simple.xls';dat=xlsread(fnm);%讀取對應(yīng)的xls文件year=dat(:,1);pday=dat(:,2);pnow=dat(:,3);saveoilprice.matyearpdaypnow;

11.6.1文件IO6.1.2低級例程

底層的文件操作,包括基本的open、close、read、write。1)打開文件fid=fopen('filename','flag');其中,flag為控制文件讀寫的標(biāo)識符,它的取值可以為*r表示打開的文件進(jìn)行讀的操作。*w表示打開的文件進(jìn)行寫的操作,若文件不存在則創(chuàng)建新的文件。12.6.1文件IO6.1.3低級例程1)打開文件

note: 1)若能夠成功地打開文件,則fid為非負(fù)的整數(shù),否則為-1。

2)關(guān)閉文件:

status=fclose(fid)若函數(shù)運(yùn)行成功,則status為0,否則為-1。

13.3)讀寫數(shù)據(jù)

MATLAB提供了兩大類低級文件I/O函數(shù)進(jìn)行文件內(nèi)容的讀寫:1)二進(jìn)制文件讀寫函數(shù)

2)文本文件讀寫函數(shù)

note:底層例程類似c語言。14.6.1文件IO6.1.4其他類型文件的操作1)圖像:imread、imwrite等2)視頻15.6.1文件IO6.1.4例子

例子:最簡單的辦法是使用界面導(dǎo)入向?qū)?,打開文件菜單中的導(dǎo)入數(shù)據(jù)而后按提示操作。Matlab支持的主要數(shù)據(jù)文件類型和對應(yīng)函數(shù)如下:

16.6.1文件IO導(dǎo)入文本文件

文本文件需要具備統(tǒng)一的行列模式,使用分隔符作為數(shù)據(jù)項間隔,這些分隔符包括空格、逗號、tab、分號或其它。數(shù)據(jù)文件可能附帶標(biāo)題行和行列頭標(biāo)簽。17.數(shù)值數(shù)據(jù)

對于數(shù)值數(shù)據(jù)可以直接使用load函數(shù)裝載,例如my_data.txt中數(shù)據(jù)如下:

12345

678910

命令A(yù)=load('my_data.txt')裝載該文本文件數(shù)據(jù)。

如果數(shù)值數(shù)據(jù)使用其它分隔符,可以使用dlmread讀入,假設(shè)my_data.txt中數(shù)據(jù)如下:

7.2;8.5;6.2;6.6

5.4;9.2;8.1;7.2

命令A(yù)=dlmread('my_data.txt',';')讀入該數(shù)據(jù)。18.包含行列標(biāo)簽的數(shù)值數(shù)據(jù)

例如:

Grade1Grade2Grade3

78.855.945.9

99.566.878.0

89.577.056.7

fid=fopen('grades.dat','r');

grades=textscan(fid,'%f%f%f',3,'headerlines',1);

fclose(fid);19.包含字符和數(shù)值的混合數(shù)據(jù)

使用textread函數(shù)讀入20.導(dǎo)出文本文件

save函數(shù)

A=[1234;5678];

savemy_data.outA–ASCII

dlmwrite函數(shù)

dlmwrite('my_data.out',A,';')

21.xlsinfo獲得文件信息使用命令[type,sheets]=xlsfinfo(filename)返回文件類型type和工作表信息。如:[type,sheets]=xlsfinfo('tempdata.xls')

22.Xlswrite導(dǎo)出數(shù)據(jù)d={'Time','Temp';1298;1399;1497}

命令xlswrite('tempdata.xls',d,'Temperatures','E1')將單元格數(shù)組d的數(shù)據(jù)寫出至tempdata.xls文件,新建工作表'Temperatures',從該工作表的E1單元格開始寫入。

23.6.1文件IO小結(jié):文件IO關(guān)注的是數(shù)據(jù)的導(dǎo)入與導(dǎo)出的問題;Matlab特有的文件格式是.mat文件,通過saveload指令可以讀寫文件;針對常用的文件格式,比如圖像(bmp/jpg),excel文件等matlab提供了高級例程;Matlab提供了從磁盤文件或剪貼簿轉(zhuǎn)載數(shù)據(jù)至工作區(qū)(數(shù)據(jù)導(dǎo)入)和將工作區(qū)變量存入磁盤文件(數(shù)據(jù)導(dǎo)出)的多種途徑。

24.6.2應(yīng)用程序接口應(yīng)用程序接口:混合編程的問題。為什么要混合編程:

1)不同的編程語言有各自的優(yōu)缺點;

matlab適合數(shù)值計算、vc等適合界面等;

2)現(xiàn)有資源的整合現(xiàn)有的資源是c或matlab的,如何利用?接口方式:1)數(shù)據(jù)的交換:通過數(shù)據(jù)文件。2)混合編程:整合到一個程序中去。25.6.2應(yīng)用程序接口Matlab與c/c++的混合編程:根據(jù)主程序框架的語言類型劃分:

a)matlab中調(diào)用c/c++

編寫mex文件;b)c/c++中調(diào)用matlabi)matlab計算引擎

ii)第三方組件:matcomiii)com組件:新版本的matlab的功能。26.6.2應(yīng)用程序接口6.2.1mex文件1)在MATLAB中可調(diào)用的C或Fortran語言程序稱

溫馨提示

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

最新文檔

評論

0/150

提交評論