




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、MATLAB程序設(shè)計綜合教程(第二版)第12章 MATLAB外部接口技術(shù) MATLAB與Microsoft Office的混合使用 MATLAB數(shù)據(jù)接口 MATLAB應(yīng)用程序接口12.1 MATLAB與Microsoft Office的混合使用1Notebook的安裝與啟動Notebook的安裝notebook -setupNotebook的啟動在MATLAB的命令窗口中輸入命令: notebook或notebook 文件名在Word窗口的“文件”菜單中選擇“新建”或“打開”命令,選擇新建或打開一個M-Book文檔。 12.1.1 在Word中使用MATLAB2Notebook菜單項M-Boo
2、k模板定義了Word與MATLAB進行通信的宏指令、文檔樣式和工具欄。Notebook的許多操作都可以通過“Notebook”菜單項的命令來完成。3單元的使用在MATLAB Notebook中,凡是在Word與MATLAB之間進行傳遞的內(nèi)容稱為單元(Cell),它是Notebook與MATLAB交互的基本單位。(1)輸入輸出單元由M-Book文檔傳向MATLAB的命令稱為輸入單元(Input Cell)。在M-Book文檔中任何合法的MATLAB命令都可以定義為輸入單元,輸入單元可以送到MATLAB環(huán)境中去執(zhí)行,執(zhí)行結(jié)果保存在MATLAB工作空間,同時送回Notebook,成為輸出單元(Out
3、put Cell)。定義輸入單元的方法是:首先選中所需命令,然后在Notebook菜單中選擇Define Input Cell命令,被選中的MATLAB命令成為輸入單元。為了執(zhí)行輸入單元,應(yīng)選擇Notebook菜單中的Evaluate Cell命令或直接按組合鍵Ctrl+Enter。(2)單元組Notebook允許把多行MATLAB命令當(dāng)作一個整體來運行。在Notebook中,把多行輸入單元或自初始化單元稱為單元組(Cell Group)。 定義單元組有以下3種方法。 對連續(xù)輸入的多行文本型MATLAB命令,用鼠標把它們同時選中,然后在Notebook菜單中選擇Define Input Cel
4、l或Define AutoInit Cell命令,分別生成輸入單元組或自初始化單元組。 對連續(xù)輸入的多行文本型MATLAB命令,用鼠標把它們同時選中,然后在Notebook菜單中選擇Evaluate Cell命令或按組合鍵Ctrl+Enter,則單元組被定義并執(zhí)行。 把已有的多個獨立輸入單元或自初始化單元同時選中,然后在Notebook菜單中選擇Group Cells命令,于是,便獲得以第一個獨立單元的性質(zhì)組合而成的單元組。 4計算區(qū)計算區(qū)(Calc Zone)是一個由普通Word文本、輸入單元和輸出單元組成的連續(xù)區(qū),用于描述某個具體的作業(yè)或問題。在計算區(qū)里,用戶可以根據(jù)描述問題的需要,安排段
5、落、標題、分欄,而不受計算區(qū)外的有關(guān)格式的約束。 定義計算區(qū)的方法是:先選定包含普通Word文本、輸入單元和輸出單元的一個連續(xù)區(qū),然后選擇Notebook菜單中的Define Calc Zone命令。選擇Evaluate Calc Zone命令即可執(zhí)行計算區(qū)中的全部輸入單元,且在每個輸入單元后面以輸出單元形式給出相應(yīng)的計算結(jié)果。12.1.2 Spreadsheet Link的使用通過Spreadsheet Link,可以在Excel工作區(qū)和MATLAB工作空間之間進行數(shù)據(jù)交換,也可以使用插件方式在Excel中調(diào)用MATLAB的算法。1Spreadsheet Link的安裝與啟動版Spreads
6、heet Link的安裝是在MATLAB安裝過程中,選中組件Excel Link,隨其他組件一起安裝。安裝完成后,還需要在Excel中進行一些設(shè)置后才能使用。2Spreadsheet Link的主要功能和操作Spreadsheet Link支持二維數(shù)值數(shù)組、一維字符數(shù)組和二維單元數(shù)組,不支持多維數(shù)組和結(jié)構(gòu)。(1)將Excel表格中的數(shù)據(jù)導(dǎo)出到MATLAB工作空間中(2)從MATLAB工作空間導(dǎo)入數(shù)據(jù)到Excel表格中(3)調(diào)用MATLAB函數(shù)進行運算12.2 MATLAB數(shù)據(jù)接口MATLAB提供多種方法支持將磁盤文件和剪貼板中的數(shù)據(jù)導(dǎo)入到MATLAB的工作區(qū),最簡單的辦法是使用數(shù)據(jù)導(dǎo)入向?qū)В?/p>
7、通過選擇“File”菜單中的“Import data”命令或在命令窗口執(zhí)行命令“uiimport”來激活它),而在M文件中則可以使用MATLAB輸入/輸出函數(shù)。12.2.1 文件輸入/輸出操作1文件打開與關(guān)閉(1)fopen函數(shù)fopen函數(shù)用于打開文件以供讀寫,其調(diào)用格式為fid = fopen (filename, permission)其中fid為文件識別號,filename為待操作的文件名,permission為對文件的允許使用方式。permission常用值有r、w、a、r+,默認為只讀。打開文件成功時,fid返回一整數(shù),用來標識該文件;打開文件不成功時,fid = 1。(2)fcl
8、ose函數(shù)fclose函數(shù)用于關(guān)閉已打開的文件,其調(diào)用格式為status = fclose(fid)關(guān)閉標識為fid的文件。如果fid為all,則關(guān)閉所有已打開的文件,但標準文件除外。返回0表示關(guān)閉成功,返回1則表示關(guān)閉不成功。2文本文件的讀寫操作(1)fscanf函數(shù)fscanf 函數(shù)用于讀取文本文件的內(nèi)容,并按指定格式存入矩陣。其調(diào)用格式為A, count= fscanf (fid, fmt, size)其中A用于存放讀取的數(shù)據(jù),count返回成功讀取的數(shù)據(jù)元素個數(shù),fid為文件識別號,fmt用以控制讀取的數(shù)據(jù)格式,size指定讀取多少數(shù)據(jù)。數(shù)據(jù)格式由%加上格式符組成,常見的格式符如表所示
9、,在%之后還可以加上數(shù)據(jù)寬度。例如,%3d,它控制讀取的整型數(shù)據(jù)取3位數(shù)字;控制讀取實型數(shù)據(jù),取10個字符(含小數(shù)點),小數(shù)部分占3位。 (2)fprintf函數(shù)fprintf函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為count = fprintf (fid, fmt, A)其中fid和fmt的意義與fscanf函數(shù)相同,A存放要寫入文件的數(shù)據(jù),count返回成功輸出的字節(jié)數(shù)。先按fmt指定的格式將數(shù)據(jù)矩陣A格式化,然后寫入到fid所關(guān)聯(lián)的文件。如果不指定fid,則默認輸出到屏幕。3二進制文件的讀寫操作(1)fread函數(shù)從文件中讀入二進制數(shù)據(jù)。其調(diào)用格式為A,count = fr
10、ead(fid,size,precision)其中A用于存放讀取的數(shù)據(jù),count返回所讀取的數(shù)據(jù)元素個數(shù),fid為文件識別號,size用于指定讀入數(shù)據(jù)的元素數(shù)量(可取值與fscanf函數(shù)相同,省略時則讀取整個文件內(nèi)容),precision指定讀寫數(shù)據(jù)的類型,其默認值為uchar。(2)fwrite函數(shù)fwrite 函數(shù)按照指定的數(shù)據(jù)類型將矩陣中的元素寫入到文件中。其調(diào)用格式為count = fwrite (fid, A, precision)其中count返回成功寫入文件的數(shù)據(jù)元素個數(shù),fid為文件句柄,A用來存放要寫入文件的數(shù)據(jù),precision用于控制所寫數(shù)據(jù)的類型。4數(shù)據(jù)文件定位(1
11、)fseek函數(shù)用于定位文件位置指針,其調(diào)用格式為status = fseek(fid, offset, origin)其中fid為文件識別號;offset表示位置指針相對移動的字節(jié)數(shù),若為正整數(shù)表示向文件尾方向移動,若為負整數(shù)表示向文件頭方向移動;origin表示位置指針移動的參照位置,它的取值有3種可能:cof 或0表示文件的當(dāng)前位置,bof 或1表示文件的開始位置,eof或1表示文件的結(jié)束位置。若定位成功,status返回值為0,否則返回值為1。(2)ftell函數(shù)用來查詢文件指針的當(dāng)前位置,其調(diào)用格式為position = ftell (fid)ftell函數(shù)的返回值為從文件頭到指針當(dāng)
12、前位置的字節(jié)數(shù)。若返回值為1,表示獲取文件當(dāng)前位置失敗。(3)feof函數(shù)用來判斷當(dāng)前的文件位置指針是否到達文件尾部,其調(diào)用格式為 status = feof (fid)當(dāng)?shù)竭_文件結(jié)束位置時,測試結(jié)果為1,否則返回0。(4)ferror函數(shù)用來查詢最近一次輸入或輸出操作中的出錯信息,其調(diào)用格式為: message = ferror(fid)12.2.2 MAT文件與應(yīng)用1MAT文件MATLAB的“save”命令可以將MATLAB系統(tǒng)內(nèi)部數(shù)據(jù)保存為MAT文件,而“l(fā)oad”命令可以將磁盤上的MAT文件中的數(shù)據(jù)讀入到MATLAB系統(tǒng)中。此外,為了有效地管理MAT文件,以及在MATLAB外部讀取和創(chuàng)
13、建MAT文件,MATLAB提供了一個子程序庫,用戶可以在C/C+、FORTRAN程序中直接調(diào)用這些子程序來創(chuàng)建和讀取MAT文件。MATLAB提供的用于操作MAT文件的API函數(shù)封裝于兩個標準庫文件中:和。前者用于對MAT文件的操作,后者用于對MAT文件中矩陣的操作。2C語言MAT文件應(yīng)用(1)常用MAT文件操作函數(shù) 打開MAT文件。MATFile *matOpen(const char *filename, const char *mode)其中,filename為要操作的文件;mode用來說明對文件的使用方式,它可取以下值: 關(guān)閉MAT文件。int matClose(MATFile *mfp
14、);其中,mfp指向要操作的MAT文件,如果函數(shù)執(zhí)行成功,返回0,否則返回“EOF”。 向MAT文件中存入一個矩陣。int matPutVariable(MATFile *mfp, const char *name, const mxArray *mp);此函數(shù)將一個mp指向的mxArray結(jié)構(gòu)體寫入mfp所指向的MAT文件中。如果文件中存在同名的mxArray結(jié)構(gòu)體,那么將覆蓋原來的值;如果不存在同名的mxArray結(jié)構(gòu)體,則將此結(jié)構(gòu)體添加到文件末尾。函數(shù)執(zhí)行成功,返回0,否則返回一個非零值。 向MAT文件中存入一個矩陣。matPutArrayAsGlobal(MATFile*mfp, co
15、nst mxArray*mp);執(zhí)行此命令后,使得用load命令裝入這個MAT文件時,該矩陣對應(yīng)的變量成為全局變量。 獲取MAT文件中的變量列表。char *matGetDir(MATFile *mfp, int *num); 獲取MAT文件的C語言FILE句柄。FILE *matGetFp(MATFile *mfp);通過該句柄,用戶可以使用C語言的庫函數(shù)feof、ferror來判斷錯誤原因。 從MAT文件中讀取一個矩陣。mxArray *matGetVariable(MATFile *mfp, const char *name);MatGetDir、matGetFp、matGetVaria
16、ble函數(shù)通過mxCalloc函數(shù)分配內(nèi)存,在程序結(jié)束時,必須使用mxFree函數(shù)釋放內(nèi)存。 從MAT文件中刪除一個矩陣。int matDeleteVariable(MATFile *mfp, const char *name);其中name為要刪除的矩陣。如果函數(shù)執(zhí)行成功,將返回0,否則返回一個非零值。(2)mx-函數(shù)在C程序中使用MATLAB數(shù)據(jù)時還用到MATLAB提供的接口函數(shù)中的mx-函數(shù),以完成對mxArray對象的操作。MATLAB的矩陣運算是以mxArray結(jié)構(gòu)體(C+中是mwArray類)為核心構(gòu)建的,mxArray結(jié)構(gòu)體的定義在MATLAB的文件中。12.3 MATLAB與其
17、他語言的接口接口是MATLAB與其他語言程序相互調(diào)用各自函數(shù)的方法,MEX文件使MATLAB可以直接調(diào)用或鏈接C/C+語言編寫的算法函數(shù),而MATLAB引擎使C/C+語言可以調(diào)用MATLAB函數(shù)。12.3.1 MEX文件MEX(MATLAB Executable)動態(tài)鏈接函數(shù)接口是MATLAB調(diào)用其它語言編寫的程序或算法的接口,通過mex命令將C、FORTRAN語言編寫的算法函數(shù)編譯成動態(tài)鏈接程序,使之成為MATLAB的一個擴展函數(shù)。在Windows系統(tǒng)中,MEX文件是DLL格式,使用DLL格式可以直接訪問Windows系統(tǒng)的各種資源,生成圖形用戶界面,還可以利用Windows的動態(tài)數(shù)據(jù)交換能
18、力,與其他的Windows應(yīng)用程序交換數(shù)據(jù)。1MEX函數(shù)MEX函數(shù)用于從MATLAB環(huán)境中獲取必要的矩陣數(shù)據(jù)和相應(yīng)信息。所有MEX函數(shù)均在MATLAB的子文件夾externinclude中的頭文件得到聲明。 2MEX文件的建立C語言的MEX文件的源程序由如下兩個部分組成。(1)入口子程序mexFunction其作用是在MATLAB系統(tǒng)與被調(diào)用的外部子程序之間建立通信聯(lián)系,定義被MATLAB調(diào)用的外部子程序的入口地址、MATLAB系統(tǒng)和子程序傳遞的參數(shù)等。入口子程序的構(gòu)成如下:void mexFunction(int nlhs,mxArray*plhs,int nrhs,mxArray*prhs)函數(shù)中有4個參數(shù)nlhs、plhs、nrhs和prhs。nlhs是輸出數(shù)據(jù)的個數(shù),plhs是指向輸出數(shù)據(jù)的指針,nrhs是輸入數(shù)據(jù)的個數(shù),prhs是指向輸入數(shù)據(jù)的指針。 (2)計算子程序(Computational Routine)它包含所有完成計算功能的程序代碼,由入口子程序調(diào)用。3MEX文件的編譯MEX文件的編譯需要具備兩個條件:一是要求已經(jīng)安裝MATLAB應(yīng)用程序接口組件及其相應(yīng)的工具,另一個是要求有合適的C/C+語言編譯器。MEX文件的編譯使用mex命令,如果第一次使用,需要配置mex采用什么編譯器。在MAT
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 優(yōu)化資源配置的方案計劃
- 制定銷售策略實現(xiàn)業(yè)績目標計劃
- 學(xué)生日常管理與規(guī)范計劃
- 學(xué)校美術(shù)教學(xué)年度計劃
- 保安工作中的團隊協(xié)作機制研究計劃
- 《貴州錦福礦業(yè)(福泉)有限公司貴州省福泉市白馬山鋁土礦(新建)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 四川恒鼎實業(yè)有限公司大河溝煤礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案情況
- 2025數(shù)字化鄉(xiāng)村文旅發(fā)展報告
- 2025年汕尾貨運從業(yè)資格證考試一共多少題
- 2025年濮陽b2貨運資格證全題
- 新大象版三年級下冊科學(xué)第一單元《小小建筑師》全部課件(共5課時)
- 超市管理-臨期商品管理規(guī)定
- 六年級上冊心理健康課件6《健康上網(wǎng)快樂多》(27張PPT)
- 醫(yī)生證件租賃合同
- 改進維持性血液透析患者貧血狀況PDCA
- 酒店營銷與數(shù)字化實務(wù)完整全套教學(xué)課件
- 近代英國的學(xué)前教育課件
- 【知識解析】南昌起義主題圖集
- 某高速公路江蘇段施工組織設(shè)計
- 重大事故后果分析
- 武漢理工大學(xué)計算機網(wǎng)絡(luò)試題及答案
評論
0/150
提交評論