Matlab基礎(chǔ)及其應(yīng)用教程課件12_第1頁(yè)
Matlab基礎(chǔ)及其應(yīng)用教程課件12_第2頁(yè)
Matlab基礎(chǔ)及其應(yīng)用教程課件12_第3頁(yè)
Matlab基礎(chǔ)及其應(yīng)用教程課件12_第4頁(yè)
Matlab基礎(chǔ)及其應(yīng)用教程課件12_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第12章MATLAB應(yīng)用接口【本章學(xué)習(xí)目標(biāo)】掌握MATLAB與Excel的混合使用方法。掌握MATLAB數(shù)據(jù)接口的使用方法。了解MATLAB編譯器的使用方法。了解MATLAB與其他語(yǔ)言的應(yīng)用接口。12.1 MATLAB與Excel的接口Spreadsheet Link插件是MATLAB提供的Excel與MATLAB的接口,通過(guò)Spreadsheet Link,可以在Excel工作區(qū)和MATLAB工作區(qū)之間進(jìn)行數(shù)據(jù)交換1Spreadsheet Link的安裝與啟動(dòng)Spreadsheet Link的安裝是在MATLAB安裝過(guò)程中,隨其他組件一起安裝的。安裝完成后,還需要在Excel中進(jìn)行一些設(shè)置。

2、“加載宏”對(duì)話(huà)框的“可用加載項(xiàng)”列表中多了一個(gè)“Spreadsheet Link 3.3.2 for use with MATLAB and Excel”選項(xiàng)12.1.1 在Excel中導(dǎo)出/導(dǎo)入數(shù)據(jù)12.1 MATLAB與Excel的接口1Spreadsheet Link的安裝與啟動(dòng)在Excel窗口的“開(kāi)始”選項(xiàng)卡的工具欄右端多了一個(gè)MATLAB命令按鈕,該命令按鈕下拉列表包含的命令如表12.1.1 在Excel中導(dǎo)出/導(dǎo)入數(shù)據(jù)12.1 MATLAB與Excel的接口2Spreadsheet Link的主要功能和操作(1)將Excel表格中的數(shù)據(jù)導(dǎo)出到MATLAB工作空間中在Excel中選中

3、需要的數(shù)據(jù),在“開(kāi)始”選項(xiàng)卡的MATLAB命令組的下拉列表中選擇“Send data to MATLAB”命令。(2)從MATLAB工作空間導(dǎo)入數(shù)據(jù)到Excel表格中在Excel中選中要導(dǎo)入數(shù)據(jù)的起始單元格,在“開(kāi)始”選項(xiàng)卡的MATLAB命令組的下拉列表中選擇“Get data from MATLAB”命令。12.1.1 在Excel中導(dǎo)出/導(dǎo)入數(shù)據(jù)12.1 MATLAB與Excel的接口在“開(kāi)始”選項(xiàng)卡的MATLAB命令組的下拉列表中選“MATLAB Function Wizard”命令在“Select a category”欄內(nèi)選擇函數(shù)的類(lèi)別,在“Select a function”欄選擇

4、函數(shù),在“Select a function signature”欄選擇一種調(diào)用方法在“Function Arguments”對(duì)話(huà)框中設(shè)置函數(shù)的輸入、輸出參數(shù)。12.1.2 在Excel中調(diào)用MATLAB函數(shù)12.1 MATLAB與Excel的接口1導(dǎo)入工具從Excel文件、分隔文本文件和等寬的文本文件中導(dǎo)入數(shù)據(jù)。在MATLAB桌面的主頁(yè)選項(xiàng)卡中單擊“變量”命令組中的“導(dǎo)入數(shù)據(jù)”按鈕 ,或在命令行窗口輸入命令:uiimport(數(shù)據(jù)文件名)12.1.3 在MATLAB中導(dǎo)入/導(dǎo)出數(shù)據(jù)12.1 MATLAB與Excel的接口2讀寫(xiě)Excel文件的MATLAB函數(shù)(1)xlsread函數(shù)用于讀取E

5、xcel文件,調(diào)用格式為:filename指定要讀取的文件;選項(xiàng)sheet指定要讀取的工作表,默認(rèn)讀取Excel文件的第一個(gè)工作表;選項(xiàng)xlRange指定要讀取的區(qū)域12.1.3 在MATLAB中導(dǎo)入/導(dǎo)出數(shù)據(jù)num,txt,raw,custom=xlsread(filename,sheet,xlRange,processFcn)12.1 MATLAB與Excel的接口2讀寫(xiě)Excel文件的MATLAB函數(shù)(2)xlswrite函數(shù)用于將數(shù)據(jù)寫(xiě)入Excel文件,調(diào)用格式為:filename指定要寫(xiě)入數(shù)據(jù)的文件,A是存儲(chǔ)數(shù)據(jù)的MATLAB變量;選項(xiàng)sheet指定要寫(xiě)的工作表,默認(rèn)寫(xiě)入Excel文

6、件的第一個(gè)工作表;選項(xiàng)xlRange指定要寫(xiě)的區(qū)域12.1.3 在MATLAB中導(dǎo)入/導(dǎo)出數(shù)據(jù)status,message = xlswrite(filename,A,sheet,xlRange)12.2 文件操作MATLAB提供了一系列訪(fǎng)問(wèn)自由格式文件的函數(shù)1文件打開(kāi)與關(guān)閉(1)fopen函數(shù)用于打開(kāi)文件以供讀寫(xiě),調(diào)用格式為fid = fopen (filename, permission)filename指定待操作的文件名,文件名可帶路徑,默認(rèn)文件位于當(dāng)前文件夾;permission用于指定對(duì)文件的訪(fǎng)問(wèn)方式,默認(rèn)為r。fid為文件識(shí)別號(hào)。例如:12.2.1 文件輸入/輸出操作%以文本模式打

7、開(kāi)文件old.txt,允許進(jìn)行讀操作F1 = fopen(old.txt, rt) %在以二進(jìn)制模式打開(kāi)可供讀寫(xiě)的文件new.datF2 = fopen(new.dat,w+) 12.2 文件操作1文件打開(kāi)與關(guān)閉(1)fopen函數(shù)12.2.1 文件輸入/輸出操作文件打開(kāi)后,默認(rèn)以二進(jìn)制模式讀寫(xiě)數(shù)據(jù),若要以文本模式讀寫(xiě)文件,則需在參數(shù)值后加t,如rt、wt等12.2 文件操作2文本文件的讀寫(xiě)(1)fprintf函數(shù)將數(shù)據(jù)按指定格式寫(xiě)入到文本文件中。調(diào)用格式為count = fprintf (fid, fmt,A1,.,An)fid為文件識(shí)別號(hào),默認(rèn)為1,即輸出到屏幕。fmt用以控制輸出數(shù)據(jù)的格

8、式。A1,.,An為存儲(chǔ)數(shù)據(jù)的MATLAB變量。count返回成功寫(xiě)入文件的字節(jié)數(shù)。12.2.1 文件輸入/輸出操作12.2 文件操作2文本文件的讀寫(xiě)(1)fprintf函數(shù)12.2.1 文件輸入/輸出操作數(shù)據(jù)格式描述符12.2 文件操作r=1:0.1:2;A=pi*r.*r;Y=r; A;fid=fopen(file1.txt,wt);fprintf(fid,%6.2f %12.8fn,Y);fclose(fid);n表示換行符,r 表示回車(chē)符t 表示水平制表符v 表示垂直制表符。12.2 文件操作2文本文件的讀寫(xiě)(2)fscanf函數(shù)用于讀取文本文件,并按指定格式存入MATLAB變量。調(diào)用

9、格式為A, count= fscanf (fid, fmt, size)fid為文件識(shí)別號(hào),fmt用于控制讀取的數(shù)據(jù)格式,size指定讀取多少數(shù)據(jù)。size的可取值如下。Inf:表示一致讀取到文件尾,默認(rèn)值是Inf。n:表示最多讀取n個(gè)數(shù)據(jù)。m, nA用于存放讀取的數(shù)據(jù),count返回成功讀取的字符個(gè)數(shù)。12.2.1 文件輸入/輸出操作12.2 文件操作【例12.2】將整數(shù)1200寫(xiě)入文件file2.txt,每行放置5個(gè)數(shù)據(jù),數(shù)據(jù)之間用空格分隔。然后重新打開(kāi)文件,用不同格式讀取數(shù)據(jù)。u=1:200;fid=fopen(file2.txt,wt);fprintf(fid,%d %d %d %d

10、%dn,u);fclose(fid);fid=fopen(file2.txt,rt);%從當(dāng)前位置讀取100個(gè)整數(shù),存入列向量xx=fscanf(fid,%d,10); %從當(dāng)前位置讀取100個(gè)整數(shù),存入1010矩陣yy=fscanf(fid,%d,10,10);%從當(dāng)前位置讀取4個(gè)數(shù)據(jù),存儲(chǔ)為一個(gè)字符串A=fscanf(fid,%s, 4); %從當(dāng)前位置讀取后面的所有數(shù)據(jù),生成一個(gè)2行的矩陣C=fscanf(fid,%g %g,2 inf);12.2 文件操作2文本文件的讀寫(xiě)(3)fgetl與fgets函數(shù)用于按行讀取數(shù)據(jù)。調(diào)用格式為:tline = fgetl(fid)tline = f

11、gets(fid,nchar)fgetl函數(shù)讀入數(shù)據(jù)時(shí)去掉了文件中的換行符fgets函數(shù)讀入數(shù)據(jù)時(shí)保留了文件中的換行符。fgets函數(shù)的選項(xiàng)nchar指定最多讀取的字符個(gè)數(shù)。tline是一個(gè)字符向量,存儲(chǔ)讀取的數(shù)據(jù),若文件為空或讀到文件尾,則tline返回-1。12.2.1 文件輸入/輸出操作12.2 文件操作【例12.3】讀出并顯示例12.1生成的文件file1.txt中的數(shù)據(jù)。fid=fopen(file1.txt,rt); tline = fgetl(fid); %讀取第1行數(shù)據(jù)while tline=-1 %判斷是否讀到文件尾 disp (tline); tline=fgetl(fid

12、); end fclose(fid);12.2 文件操作2文本文件的讀寫(xiě)(4)textscan函數(shù)用于讀取多種類(lèi)型數(shù)據(jù)重復(fù)排列、但非規(guī)范格式的文件。調(diào)用格式為C=textscan(fid, fmt, N , param, value)fid為文件識(shí)別號(hào),fmt用以控制讀取的數(shù)據(jù)格式。選項(xiàng)N指定重復(fù)使用該格式的次數(shù)。選項(xiàng)param與value成對(duì)使用,param指定操作屬性,value是屬性值。12.2.1 文件輸入/輸出操作12.2 文件操作【例12.4】假定文件file4.txt中有以下格式的數(shù)據(jù)fid = fopen(file4.txt, rt);grades = textscan(fid

13、, %s %d %d %d,3,headerlines,1);12.2 文件操作3二進(jìn)制文件的讀寫(xiě)二進(jìn)制文件中的數(shù)據(jù)為二進(jìn)制編碼,例如圖片文件、視頻文件,數(shù)據(jù)在讀寫(xiě)時(shí)采用二進(jìn)制模式,不需要轉(zhuǎn)換類(lèi)型,因此對(duì)于大量數(shù)據(jù)的讀寫(xiě),二進(jìn)制文件比文本文件更小,讀寫(xiě)效率更高。(1)fread函數(shù)用于讀取二進(jìn)制文件中的數(shù)據(jù)。調(diào)用格式為A, count = fread(fid, size, precision, skip)fid為文件識(shí)別號(hào);選項(xiàng)size用于指定讀入數(shù)據(jù)的元素?cái)?shù)量,默認(rèn)讀取整個(gè)文件內(nèi)容;選項(xiàng)precision指定讀寫(xiě)數(shù)據(jù)的精度;選項(xiàng)skip稱(chēng)為循環(huán)因子,若skip值不為1,則按skip指定的比例

14、周期性地跳過(guò)一些數(shù)據(jù),默認(rèn)為0。A用于存放讀取的數(shù)據(jù),count返回所讀取的數(shù)據(jù)個(gè)數(shù)。12.2.1 文件輸入/輸出操作12.2 文件操作【例12.5】假設(shè)文件alphabet.txt的內(nèi)容是按順序排列的26個(gè)小寫(xiě)英文字母,讀取并顯示前5個(gè)字母的ASCII碼和這5個(gè)字符。%以二進(jìn)制模式讀取數(shù)據(jù)fid = fopen(alphabet.txt, r);c1 = fread(fid, 5);display(c1)fclose(fid);%以文本模式讀取數(shù)據(jù)fid = fopen(alphabet.txt, rt);c2 = fgets(fid,5);display(c2)fclose(fid);12

15、.2 文件操作3二進(jìn)制文件的讀寫(xiě)(2)fwrite函數(shù)用于將數(shù)據(jù)用二進(jìn)制模式寫(xiě)入文件。調(diào)用格式為count = fwrite (fid, A, precision, skip)fid為文件識(shí)別號(hào),A是存儲(chǔ)了數(shù)據(jù)的變量;選項(xiàng)precision用于控制數(shù)據(jù)輸出的精度,默認(rèn)按列順序以8位無(wú)符號(hào)整數(shù)的形式寫(xiě)入文件;選項(xiàng)skip控制每次執(zhí)行寫(xiě)入操作跳過(guò)的字節(jié)數(shù),默認(rèn)為0。count返回成功寫(xiě)入文件的數(shù)據(jù)個(gè)數(shù)。12.2.1 文件輸入/輸出操作12.2 文件操作【例12.6】建立一數(shù)據(jù)文件magic5.dat,用于存放5階魔方陣。fid=fopen(magic5.dat,w);cnt=fwrite(fid,

16、magic(5),int32);fclose(fid);下列程序則可實(shí)現(xiàn)對(duì)數(shù)據(jù)文件magic5.dat的讀操作。fid=fopen(magic5.dat,r);B,cnt=fread(fid,5,inf,int32)fclose(fid);12.2 文件操作4其他文件操作(1)fseek函數(shù)用于定位文件位置指針,調(diào)用格式為status = fseek(fid, offset, origin)fid為文件識(shí)別號(hào);offset表示位置指針相對(duì)移動(dòng)的字節(jié)數(shù),若為正整數(shù)表示向文件尾方向移動(dòng),若為負(fù)整數(shù)表示向文件頭方向移動(dòng);origin表示位置指針移動(dòng)的參照位置,可取值有3種:cof 或0表示文件指針的

17、當(dāng)前位置,bof 或1表示文件的開(kāi)始位置,eof或1表示文件的結(jié)束位置。若操作成功,status返回值為0,否則返回值為1。12.2.1 文件輸入/輸出操作fseek(fid, 0, -1)%指針移動(dòng)到文件頭 fseek(fid, -5, eof)%指針移動(dòng)到文件尾倒數(shù)第5個(gè)字節(jié) 12.2 文件操作4其他文件操作(2)frewind函數(shù)用來(lái)將文件位置指針移至文件首,調(diào)用格式為: frewind(fid)(3)ftell函數(shù)用來(lái)查詢(xún)文件位置指針的當(dāng)前位置,調(diào)用格式為position = ftell(fid)position返回位置指針的當(dāng)前位置。若查詢(xún)成功,返回從文件頭到指針當(dāng)前位置的字節(jié)數(shù);若

18、查詢(xún)不成功,返回1。12.2.1 文件輸入/輸出操作12.2 文件操作4其他文件操作(4)feof函數(shù)用來(lái)判斷當(dāng)前的文件位置指針是否到達(dá)文件尾,調(diào)用格式為 status = feof(fid)當(dāng)?shù)竭_(dá)文件尾時(shí),結(jié)果為1,否則返回0。(5)ferror函數(shù)用來(lái)查詢(xún)最近一次輸入或輸出操作中的出錯(cuò)信息,調(diào)用格式為: message,errnum = ferror(fid,clear)clear用于清除文件的錯(cuò)誤指示符。message返回最近的輸入/輸出操作的錯(cuò)誤消息;errnum用于返回錯(cuò)誤代號(hào),若errnum為0表示最近的操作成功。12.2.1 文件輸入/輸出操作12.2 文件操作1MAT文件MAT

19、文件是MATLAB存儲(chǔ)數(shù)據(jù)的標(biāo)準(zhǔn)格式,在MAT文件中不僅保存變量的值,而且保存了變量的名稱(chēng)、大小、數(shù)據(jù)類(lèi)型等信息。MAT文件的數(shù)據(jù)單元分為標(biāo)志和數(shù)據(jù)兩個(gè)部分,標(biāo)志包含數(shù)據(jù)類(lèi)型、數(shù)據(jù)大小等信息。save命令將工作區(qū)的數(shù)據(jù)保存為MAT文件load命令讀取MAT文件中的數(shù)據(jù)并加載到工作區(qū)。12.2.2 MAT文件12.2 文件操作2. MAT文件的基本操作在C+程序中,通過(guò)指向MAT文件的指針對(duì)文件進(jìn)行操作。定義指向MAT文件的指針的格式為:MATFile *mfp;MATFile指定指針類(lèi)型,mfp為指針變量。MATFile類(lèi)型是在頭文件mat.h中定義的,因此,C+程序首部要使用命令:#incl

20、ude mat.h12.2.2 MAT文件12.2 文件操作2. MAT文件的基本操作在其他語(yǔ)言程序中,通過(guò)調(diào)用MAT函數(shù)對(duì)MAT文件進(jìn)行操作。文件操作分成3步:(1)打開(kāi)MAT文件。matOpen函數(shù)用于打開(kāi)MAT文件,調(diào)用格式如下。mfp = matOpen(filename, mode)mode常用值如下,默認(rèn)為r。r:以只讀方式打開(kāi)文件?!皍”:以更新方式打開(kāi)文件,可讀可寫(xiě)。w:以寫(xiě)方式打開(kāi)一個(gè)文件。12.2.2 MAT文件12.2 文件操作2. MAT文件的基本操作(2)讀寫(xiě)MAT文件 將數(shù)據(jù)寫(xiě)入MAT文件的函數(shù)matPutVariable函數(shù)用于將數(shù)據(jù)寫(xiě)入MAT文件,調(diào)用格式為:m

21、atPutVariable(mfp, name, mp)mfp是指向MAT文件的指針,name指定將數(shù)據(jù)寫(xiě)入文件中所使用的變量名,mp是mxArray類(lèi)型指針,指向內(nèi)存中待寫(xiě)入文件的數(shù)據(jù)塊。12.2.2 MAT文件12.2 文件操作2. MAT文件的基本操作(2)讀寫(xiě)MAT文件 從MAT文件讀取數(shù)據(jù)的函數(shù)matGetVariable函數(shù)用于從MAT文件讀取指定變量,調(diào)用格式為:matGetVariable(mfp, name)mfp是指向MAT文件的指針,name是mxArray類(lèi)型變量。如果讀操作成功,返回一個(gè)mxArray類(lèi)型值,不成功,則返回NULL。12.2.2 MAT文件12.2 文

22、件操作2. MAT文件的基本操作(2)讀寫(xiě)MAT文件 獲取MAT文件變量列表的函數(shù)matGetDir函數(shù)用于獲取MAT文件的變量列表,調(diào)用格式為:matGetDir(mfp, n)mfp是指向MAT文件的指針,n是整型指針,用于存儲(chǔ)MAT文件中所包含的mxArrary類(lèi)型變量的個(gè)數(shù)。操作成功,返回一個(gè)字符數(shù)組,其每個(gè)元素存儲(chǔ)MAT文件中的一個(gè)mxArray變量名;12.2.2 MAT文件12.2 文件操作2. MAT文件的基本操作(3)關(guān)閉MAT文件matClose函數(shù)關(guān)閉MAT文件,釋放其所占用的內(nèi)存資源。調(diào)用格式為:matClose(mfp);mfp是指向MAT文件的指針12.2.2 MA

23、T文件12.2 文件操作3. mx函數(shù)在C+程序中,使用mxArray類(lèi)型的數(shù)據(jù)需要調(diào)用mx函數(shù)進(jìn)行處理。12.2.2 MAT文件C+程序中常用mx函數(shù)12.2 文件操作4. 讀寫(xiě)MAT文件的方法【例12.7】編寫(xiě)C+程序,創(chuàng)建一個(gè)MAT文件mattest.mat ,并寫(xiě)入三種類(lèi)型的數(shù)據(jù)。12.2.2 MAT文件12.2 文件操作5. 編譯讀寫(xiě)MAT文件的C+程序(1)使用MATLAB編譯器編譯在MATLAB桌面的命令行窗口執(zhí)行以下命令: mex -v -client engine MatDemo.cpp這時(shí),在MATLAB當(dāng)前文件夾下生成了應(yīng)用程序文件MatDemo.exe。(2)用其他編譯

24、器編譯如果用其他編譯器編譯讀寫(xiě)MAT文件的C+源程序,需要先對(duì)含該源程序的項(xiàng)目的屬性進(jìn)行設(shè)置。12.2.2 MAT文件12.2 文件操作6. 運(yùn)行應(yīng)用程序(1)設(shè)置運(yùn)行環(huán)境。(2)運(yùn)行應(yīng)用程序(3)加載MAT文件12.2.2 MAT文件12.3 MATLAB編譯器MCR(MATLAB Compiler Runtime)是MATLAB提供的編譯工具?!纠?2.8】設(shè)工作文件夾下有alone.m文件,內(nèi)容如下:n=3;theta=0:90;x=n*cos(theta)+cos(n*theta);y=n*sin(theta)-sin(n*theta);plot(x,y)用MATLAB編譯器將alon

25、e.m文件生成一個(gè)獨(dú)立的應(yīng)用程序。12.3.1 生成獨(dú)立應(yīng)用程序12.3 MATLAB編譯器(1)建立工程。從“APP”選項(xiàng)卡的“APP”功能組中選 “Application Compiler”,或在MATLAB命令面板中輸入以下命令。 applicationCompiler12.3.1 生成獨(dú)立應(yīng)用程序12.3 MATLAB編譯器(2)打包工程。單擊編譯器工具欄右端的“Package”按鈕打包成功后,在當(dāng)前文件夾下會(huì)創(chuàng)建項(xiàng)目文件夾,項(xiàng)目文件夾下有以下內(nèi)容:文件夾for_redistribution:存儲(chǔ)安裝程序。 文件夾for_redistribution_files_only:存儲(chǔ)發(fā)布成功

26、的應(yīng)用程序、圖標(biāo)、說(shuō)明文檔等文件。文件夾for_testing:存儲(chǔ)用于測(cè)試的應(yīng)用程序文件。文件PackagingLog.html:記錄編譯過(guò)程的相關(guān)信息。12.3.1 生成獨(dú)立應(yīng)用程序12.3 MATLAB編譯器(3)安裝應(yīng)用。運(yùn)行工程文件夾的子文件夾for_redistribution下的安裝程序(MyAppInstaller_mcr.exe或MyAppInstaller_web.exe)安裝應(yīng)用。(4)運(yùn)行應(yīng)用程序。12.3.1 生成獨(dú)立應(yīng)用程序12.3 MATLAB編譯器1生成.NET組件MATLAB Builder NE用于將 MATLAB程序生成.NET 或COM組件,隨后可以在.

27、NET程序中調(diào)用?!纠?2.9】在當(dāng)前文件夾下有函數(shù)文件mymagic.m,文件的內(nèi)容如下:function y = mymagic(x)y = magic(x);將mymagic.m編譯生成.NET組件,并發(fā)布到.NET應(yīng)用中。12.3.2 生成組件和共享庫(kù)12.3 MATLAB編譯器1生成.NET組件(1)用MATLAB Builder NE生成.NET組件 創(chuàng)建MATLAB Builder NE類(lèi)的.NET Assembly工程。 修改工程參數(shù)。 打包工程。 安裝應(yīng)用。12.3.2 生成組件和共享庫(kù)12.3 MATLAB編譯器1生成.NET組件(2)在.NET應(yīng)用中使用.NET組件 建立

28、Visual Studio項(xiàng)目。添加對(duì)組件mymagic.dll的引用。添加對(duì)MATLAB系統(tǒng)庫(kù)文件MWArray.dll的引用。向工程中添加一個(gè)窗體,在窗體中放置一個(gè)文本框TextBox1、一個(gè)標(biāo)簽Label1和一個(gè)命令按鈕Button1。編輯代碼12.3.2 生成組件和共享庫(kù)12.3 MATLAB編譯器2生成Excel插件【例12.10】將例12.9的函數(shù)文件mymagic.m生成Excel插件,并在Excel中使用。(1)編譯預(yù)處理。(2)建立一個(gè)MATLAB Library Compiler類(lèi)的Excel Add-in工程。在TYPE列表里選中“Excel Add-in”項(xiàng)。(3)打包

29、工程。(4)安裝應(yīng)用,注冊(cè)組件。(5)在Excel加載組件。12.3.2 生成組件和共享庫(kù)12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口MEX是MATLAB中用于調(diào)用其它語(yǔ)言編寫(xiě)的程序的接口。1MEX函數(shù)MEX庫(kù)函數(shù)用于MEX程序與MATLAB環(huán)境交換數(shù)據(jù)和從MATLAB工作空間獲取相應(yīng)信息。12.4.1 MEX文件12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口2MEX文件源程序的建立(1)入口子程序定義被MATLAB調(diào)用的外部子程序的入口地址、MATLAB系統(tǒng)和子程序傳遞的參數(shù)等。入口子程序的定義格式如下:void mexFunction(int nlhs,mxArray *plhs,int

30、 nrhs,const mxArray *prhs)nlhs定義輸出結(jié)果的個(gè)數(shù),plhs指向用于返回輸出結(jié)果的變量,nrhs定義輸入?yún)?shù)的個(gè)數(shù),prhs指向存儲(chǔ)輸入?yún)?shù)的變量。prhs 和 plhs 都是指向mxArray 對(duì)象的指針。12.4.1 MEX文件12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口2MEX文件源程序的建立(1)入口子程序(2)計(jì)算子程序(Computational Routine)由入口子程序調(diào)用。計(jì)算子程序的定義格式和其他C/C+子程序的定義格式相同。頭文件mex.h中包含了所有的MEX函數(shù)聲明,因此在文件首加入宏命令:#include mex.h12.4.1 MEX

31、文件12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口【例12.11】用C+編寫(xiě)求兩個(gè)數(shù)的最小公倍數(shù)的MEX文件源程序,并編譯生成MEX文件。調(diào)用該MEX文件,求兩個(gè)整數(shù)的最小公倍數(shù)。12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口3MEX文件源程序的編譯編譯mex文件源程序有兩種方法:利用其他編譯工具,如Microsoft Visual Studio;利用MATLAB提供的編譯器。例如,編譯例12.11的MEX源程序,在命令行窗口輸入 mex cmex.cpp編譯成功,將在當(dāng)前文件夾下生成與源程序同名的MEX文件cmex.mexw64。12.4.1 MEX文件12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口3MEX文件源程序的編譯調(diào)用MEX文件的方法和調(diào)用M函數(shù)的方法相同。例如,在MATLAB命令行窗口輸入以下命令測(cè)試上述MEX文件: z = cmex(6,9)z = 1812.4.1 MEX文件12.4 MATLAB與其他語(yǔ)言程序的應(yīng)用接口在其他語(yǔ)言編寫(xiě)的程序中利用MATLAB引擎來(lái)調(diào)用MATLAB函數(shù)。1MATLAB引擎函數(shù)頭文件engine.h包含了所有C/C+引擎函數(shù)的定義,因此在文件首須加入宏命令:#include engine.h在C+程序中,通過(guò)指向MATLAB引擎對(duì)象的指針操作MATLAB引擎對(duì)象。定義指向MATLAB引擎對(duì)象指針的格式為

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論