![MATLAB基礎(chǔ)知識(shí)第11章_第1頁(yè)](http://file4.renrendoc.com/view/85c209c549a6514a5baabf01abebc7a3/85c209c549a6514a5baabf01abebc7a31.gif)
![MATLAB基礎(chǔ)知識(shí)第11章_第2頁(yè)](http://file4.renrendoc.com/view/85c209c549a6514a5baabf01abebc7a3/85c209c549a6514a5baabf01abebc7a32.gif)
![MATLAB基礎(chǔ)知識(shí)第11章_第3頁(yè)](http://file4.renrendoc.com/view/85c209c549a6514a5baabf01abebc7a3/85c209c549a6514a5baabf01abebc7a33.gif)
![MATLAB基礎(chǔ)知識(shí)第11章_第4頁(yè)](http://file4.renrendoc.com/view/85c209c549a6514a5baabf01abebc7a3/85c209c549a6514a5baabf01abebc7a34.gif)
![MATLAB基礎(chǔ)知識(shí)第11章_第5頁(yè)](http://file4.renrendoc.com/view/85c209c549a6514a5baabf01abebc7a3/85c209c549a6514a5baabf01abebc7a35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11章
MATLAB應(yīng)用接口實(shí)現(xiàn)MATLAB與其他編程語(yǔ)言混合編程的方法很多,通常在混合編程時(shí)根據(jù)是否需要MATLAB運(yùn)行,可以分為兩大類:MATLAB在后臺(tái)運(yùn)行和可以脫離MATLAB環(huán)境運(yùn)行?!颈菊聦W(xué)習(xí)目標(biāo)】●MATLAB與Word和Excel的混合使用?!馦ATLAB數(shù)據(jù)接口?!馦ATLAB編譯器?!馦ATLAB與其他語(yǔ)言的接口。11.1MATLAB與Word和Excel的混合使用11.1.1Notebook的使用為了在Word環(huán)境下調(diào)用MATLAB的計(jì)算功能,需要調(diào)用MATLAB為Word創(chuàng)建的模板M-Book.dot。利用該模板創(chuàng)建的Word文檔通常稱為M-Book文檔。在一個(gè)M-Book文檔中,可以包含MATLAB的命令、計(jì)算結(jié)果、輸出的圖形等。1.Notebook的安裝與啟動(dòng)notebook-setup系統(tǒng)自動(dòng)識(shí)別本機(jī)所裝Word版本,安裝模板文件Normal.dot。啟動(dòng)Notebook有兩種方法從MATLAB中啟動(dòng)Notebook的方法:在MATLAB的命令窗口中鍵入命令notebook或notebook文件名從Word中啟動(dòng)Notebook的方法是2.Notebook菜單項(xiàng)M-Book模板定義了Word與MATLAB進(jìn)行通信的宏指令、文檔樣式和工具欄。Notebook的許多操作都可以通過“Notebook”菜單項(xiàng)的命令來完成。3.單元的使用在MATLABNotebook中,凡是在Word與MATLAB之間進(jìn)行傳遞的內(nèi)容稱為單元(Cell),它是Notebook與MATLAB交互的基本單位。(1)輸入輸出單元由M-Book文檔傳向MATLAB的命令稱為輸入單元(InputCell)。在M-Book文檔中任何合法的MATLAB命令都可以定義為輸入單元,輸入單元可以送到MATLAB環(huán)境中去執(zhí)行,執(zhí)行結(jié)果保存在MATLAB工作空間,同時(shí)送回Notebook,成為輸出單元(OutputCell)。(2)單元組Notebook允許把多行MATLAB命令當(dāng)作一個(gè)整體來運(yùn)行。在Notebook中,把多行輸入單元或自初始化單元稱為單元組(CellGroup)。4.計(jì)算區(qū)計(jì)算區(qū)(CalcZone)是一個(gè)由普通Word文本、輸入單元和輸出單元組成的連續(xù)區(qū),用于描述某個(gè)具體的作業(yè)或問題。在計(jì)算區(qū)里,用戶可以根據(jù)描述問題的需要,安排段落、標(biāo)題、分欄,而不受計(jì)算區(qū)外的有關(guān)格式的約束。11.1.2SpreadsheetLink的使用通過SpreadsheetLink,可以在Excel工作區(qū)和MATLAB工作空間之間進(jìn)行數(shù)據(jù)交換,也可以使用插件方式在Excel中調(diào)用MATLAB的算法。1.SpreadsheetLink的安裝與啟動(dòng)MATLAB7.X版SpreadsheetLink的安裝是在MATLAB安裝過程中,選中組件ExcelLink,隨其他組件一起安裝。安裝完成后,還需要在Excel中進(jìn)行一些設(shè)置后才能使用。啟動(dòng)SpreadsheetLink2.SpreadsheetLink的主要功能和操作SpreadsheetLink支持二維數(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ù)進(jìn)行運(yùn)算11.2MATLAB數(shù)據(jù)接口MATLAB提供了多種不同層次的數(shù)據(jù)輸入/輸出函數(shù)。MATLAB提供多種方法支持將磁盤文件和剪貼板中的數(shù)據(jù)導(dǎo)入到MATLAB的工作區(qū),最簡(jiǎn)單的辦法是使用數(shù)據(jù)導(dǎo)入向?qū)В赏ㄟ^選擇“File”菜單中的“Importdata”命令或在命令窗口執(zhí)行命令“uiimport”來激活它),而在M文件中則可以使用MATLAB輸入/輸出函數(shù)。11.2.1文件輸入/輸出操作1.文件打開與關(guān)閉對(duì)一個(gè)文件進(jìn)行操作以前,必須先打開該文件,系統(tǒng)將為其分配一個(gè)輸入/輸出緩沖區(qū)。當(dāng)文件操作結(jié)束后,還應(yīng)關(guān)閉文件,及時(shí)釋放緩沖區(qū)。(1)fopen函數(shù)fopen函數(shù)用于打開文件以供讀寫,其調(diào)用格式為fid=fopen(filename,permission)其中fid為文件識(shí)別號(hào),filename為待操作的文件名,permission為對(duì)文件的允許使用方式。打開文件成功時(shí),fid返回一整數(shù),用來標(biāo)識(shí)該文件;打開文件不成功時(shí),fid=1。permission常用值有’r’、’w’、’a’、’r+’,默認(rèn)為只讀。(2)fclose函數(shù)fclose函數(shù)用于關(guān)閉已打開的文件,其調(diào)用格式為status=fclose(fid)關(guān)閉標(biāo)識(shí)為fid的文件。如果fid為'all',則關(guān)閉所有已打開的文件,但標(biāo)準(zhǔ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ù)元素個(gè)數(shù),fid為文件識(shí)別號(hào),fmt用以控制讀取的數(shù)據(jù)格式,size指定讀取多少數(shù)據(jù)。數(shù)據(jù)格式由%加上格式符組成,常見的格式符如表11.4所示,在%之后還可以加上數(shù)據(jù)寬度。例如,%3d,它控制讀取的整型數(shù)據(jù)取3位數(shù)字;%10.3f控制讀取實(shí)型數(shù)據(jù),取10個(gè)字符(含小數(shù)點(diǎn)),小數(shù)部分占3位。例如x=fscanf(fid,'%5d',100);y=fscanf(fid,'%5d',[10,10]);A=fscanf(fid,'%s',[4]);C=fscanf(fid,'%g%g',[2inf]);(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,則默認(rèn)輸出到屏幕。【例11.1】計(jì)算當(dāng)x
=
[0.0,0.1,0.2,…,1.0]時(shí),f
(x)
=
ex的值,并將結(jié)果寫入文件demo1.txt。程序如下:x=0:0.1:1;Y=[x;exp(x)];fid=fopen('demo1.txt','w');fprintf(fid,'%6.2f%12.8f\n',Y);fclose(fid);(3)fgetl與fgets函數(shù)按行讀取數(shù)據(jù)。其調(diào)用格式為line=fgetl(fid)line=fgets(fid,nchar)fgetl命令讀入的字符串中不包括換行符,如讀到文件末尾,則返回1。fgets命令讀入數(shù)據(jù)時(shí)保留原文件中的換行符,輸入可選項(xiàng)nchar是整型數(shù),如果指定此項(xiàng)數(shù)值,則讀入一行時(shí),最多讀nchar個(gè)字符。【例11.2】讀出例11.1生成的文件demo1.txt中的數(shù)據(jù)。程序如下:fid=fopen('demo1.txt','r');while1line=fgetl(fid);ifline<0break,end;
disp(line);endfclose(fid);(4)textscan函數(shù)有格式文件可以使用文本輸入函數(shù)textscan讀取數(shù)據(jù)。textscan函數(shù)調(diào)用格式為C=textscan(fid,fmt,N,param,value)其中C為單元數(shù)組,fid為待操作的文件識(shí)別號(hào),fmt用以控制讀取的數(shù)據(jù)格式,N指定重復(fù)使用該格式的次數(shù),param指定一些特殊操作,value是與特殊操作有關(guān)的值。例如,跳過兩行標(biāo)題行可將'headerlines'參數(shù)設(shè)為2。【例11.3】假定文件textdemo.txt中有以下格式的數(shù)據(jù):NameEnglishChineseMathmaticsWang 9998100Li 988970......此文件第一行為標(biāo)題行,第2~5行的第1列為字符型,后3列為整型。從該文件中將前3個(gè)數(shù)據(jù)讀入到grades的命令如下:fid=fopen('textdemo.txt','r');grades=textscan(fid,'%s%d%d
%d',3,'headerlines',1);(5)fread函數(shù)從文件中讀入二進(jìn)制數(shù)據(jù)。其調(diào)用格式為[A,count]=fread(fid,size,precision,skip)其中A用于存放讀取的數(shù)據(jù),count返回所讀取的數(shù)據(jù)元素個(gè)數(shù),fid為文件識(shí)別號(hào),size用于指定讀入數(shù)據(jù)的元素?cái)?shù)量(可取值與fscanf函數(shù)相同,省略時(shí)則讀取整個(gè)文件內(nèi)容),precision指定讀寫數(shù)據(jù)的類型,常用的數(shù)據(jù)類型如表11.5所示,其默認(rèn)值為uchar。skip稱為循環(huán)因子,若指定skip值且該值不為1,則按skip指定的比例周期性地跳過一些數(shù)據(jù),使得讀取的數(shù)據(jù)具有選擇性。例如,按16位有符號(hào)數(shù)據(jù)格式讀取文件exmp1.dat的前100個(gè)數(shù)據(jù)放入向量d的命令為fid=fopen('exmp1.dat','r');d=fread(fid,100,'int32');【例11.4】假設(shè)文件alphabet.txt的內(nèi)容是按順序排列的26個(gè)大寫英文字母,讀取前5個(gè)字母的ASCII和這5個(gè)字符。程序如下:fid=fopen('alphabet.txt','r');c=fread(fid,5);frewind(fid);d=fread(fid,5,'*char');fclose(fid);其中frewind函數(shù)用于將文件位置指針返回到文件的起始位置。fscanf與fread函數(shù)在讀取數(shù)據(jù)時(shí)較靈活,不論數(shù)據(jù)文件中數(shù)據(jù)是否具有確定的規(guī)律,均可以將數(shù)據(jù)文件的全部數(shù)據(jù)讀入。而load函數(shù)在載入數(shù)據(jù)時(shí),要求數(shù)據(jù)文件中的數(shù)據(jù)是有規(guī)律排列的,數(shù)據(jù)的排列類似矩陣或表格形式,否則不能成功讀取數(shù)據(jù)。(6)fwrite函數(shù)fwrite
函數(shù)按照指定的數(shù)據(jù)類型將矩陣中的元素寫入到文件中。其調(diào)用格式為count=fwrite(fid,A,precision)其中count返回成功寫入文件的數(shù)據(jù)元素個(gè)數(shù),fid為文件句柄,A用來存放要寫入文件的數(shù)據(jù),precision用于控制所寫數(shù)據(jù)的類型。例如:fid=fopen('aaa.dat','w');fwrite(fid,X,'float32');將矩陣X中的數(shù)據(jù)用32位浮點(diǎn)格式寫入aaa.dat文件?!纠?1.5】建立一數(shù)據(jù)文件magic5.dat,用于存放5階魔方陣。fid=fopen('magic5.dat','w');cnt=fwrite(fid,magic(5),'int32');fclose(fid);上述程序段將5階魔方陣以32位整數(shù)格式寫入文件magic5.dat中。下列程序則可實(shí)現(xiàn)對(duì)數(shù)據(jù)文件magic5.dat的讀操作。fid=fopen('magic5.dat','r');[B,cnt]=fread(fid,[5,inf],'int32');fclose(fid);程序執(zhí)行結(jié)果如下:B=17241815235714164613202210121921311182529cnt=253.?dāng)?shù)據(jù)文件定位MATLAB自動(dòng)創(chuàng)建一個(gè)文件位置指針來管理和維護(hù)文件讀寫數(shù)據(jù)的起始位置。(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表示文件的當(dāng)前位置,'bof'或1表示文件的開始位置,'eof'或1表示文件的結(jié)束位置。若定位成功,status返回值為0,否則返回值為–1。例如:fseek(fid,0,-1) %指針指向文件頭fseek(fid,-5,'eof') %指針指向文件尾前第5個(gè)字節(jié)(2)ftell函數(shù)用來查詢文件指針的當(dāng)前位置,其調(diào)用格式為position=ftell(fid)ftell函數(shù)的返回值為從文件頭到指針當(dāng)前位置的字節(jié)數(shù)。若返回值為–1,表示獲取文件當(dāng)前位置失敗。【例11.6】下列程序執(zhí)行后,變量four、position和three的值是多少?a=1:5;fid=fopen('fdat.bin','w');%以寫方式打開文件fdat.binfwrite(fid,a,'int16');%將a的元素以雙字節(jié)整型寫入文件fdat.binfclose(fid);fid=fopen('fdat.bin','r');%以讀數(shù)據(jù)方式打開文件fdat.binstatus=fseek(fid,6,'bof');%將文件指針從開始位置向尾部移動(dòng)6個(gè)字節(jié)four=fread(fid,1,'int16');%讀取第4個(gè)數(shù)據(jù),并移動(dòng)指針到下一個(gè)數(shù)據(jù)position=ftell(fid);%ftell的返回值為8status=fseek(fid,-4,'cof');%將文件指針從當(dāng)前位置往前移動(dòng)4個(gè)字節(jié)three=fread(fid,1,'int16');%讀取第3個(gè)數(shù)據(jù)status=fclose(fid);(3)feof函數(shù)用來判斷當(dāng)前的文件位置指針是否到達(dá)文件尾部,其調(diào)用格式為status=feof(fid)當(dāng)?shù)竭_(dá)文件結(jié)束位置時(shí),測(cè)試結(jié)果為1,否則返回0。(4)ferror函數(shù)用來查詢最近一次輸入或輸出操作中的出錯(cuò)信息,其調(diào)用格式為:message=ferror(fid)11.2.2MAT文件與應(yīng)用MAT文件是MATLAB數(shù)據(jù)存儲(chǔ)的默認(rèn)文件格式,以雙精度二進(jìn)制格式保存數(shù)據(jù)。MAT文件為其他語(yǔ)言(C和Fortran)使用、合并MATLAB數(shù)據(jù)提供了一種共享機(jī)制。1.MAT文件MATLAB的“save”命令可以將MATLAB系統(tǒng)內(nèi)部數(shù)據(jù)保存為MAT文件,而“l(fā)oad”命令可以將磁盤上的MAT文件中的數(shù)據(jù)讀入到MATLAB系統(tǒng)中。此外,為了有效地管理MAT文件,以及在MATLAB外部讀取和創(chuàng)建MAT文件,MATLAB提供了一個(gè)子程序庫(kù),用戶可以在C/C++、FORTRAN程序中直接調(diào)用這些子程序來創(chuàng)建和讀取MAT文件。MATLAB提供的用于操作MAT文件的API函數(shù)封裝于兩個(gè)標(biāo)準(zhǔn)庫(kù)文件中:libmat.lib和libmx.lib。前者用于對(duì)MAT文件的操作,后者用于對(duì)MAT文件中矩陣的操作。2.C語(yǔ)言MAT文件應(yīng)用(1)常用MAT文件操作函數(shù)①打開MAT文件。MATFile*matOpen(constchar*filename,constchar*mode)其中,filename為要操作的文件;mode用來說明對(duì)文件的使用方式,它可取以下值:②關(guān)閉MAT文件。int
matClose(MATFile*mfp);其中,mfp指向要操作的MAT文件,如果函數(shù)執(zhí)行成功,返回0,否則返回“EOF”。③向MAT文件中存入一個(gè)矩陣。int
matPutVariable(MATFile*mfp,constchar*name,constmxArray*mp);此函數(shù)將一個(gè)mp指向的mxArray結(jié)構(gòu)體寫入mfp所指向的MAT文件中。如果文件中存在同名的mxArray結(jié)構(gòu)體,那么將覆蓋原來的值;如果不存在同名的mxArray結(jié)構(gòu)體,則將此結(jié)構(gòu)體添加到文件末尾。函數(shù)執(zhí)行成功,返回0,否則返回一個(gè)非零值。④向MAT文件中存入一個(gè)矩陣。matPutArrayAsGlobal(MATFile*mfp,constmxArray*mp);執(zhí)行此命令后,使得用load命令裝入這個(gè)MAT文件時(shí),該矩陣對(duì)應(yīng)的變量成為全局變量。⑤獲取MAT文件中的變量列表。char*matGetDir(MATFile*mfp,int*num);⑥獲取MAT文件的C語(yǔ)言FILE句柄。FILE*matGetFp(MATFile*mfp);通過該句柄,用戶可以使用C語(yǔ)言的庫(kù)函數(shù)feof、ferror來判斷錯(cuò)誤原因。⑦從MAT文件中讀取一個(gè)矩陣。mxArray*matGetVariable(MATFile*mfp,constchar*name);MatGetDir、matGetFp、matGetVariable函數(shù)通過mxCalloc函數(shù)分配內(nèi)存,在程序結(jié)束時(shí),必須使用mxFree函數(shù)釋放內(nèi)存。⑧從MAT文件中刪除一個(gè)矩陣。int
matDeleteVariable(MATFile*mfp,constchar*name);其中name為要?jiǎng)h除的矩陣。如果函數(shù)執(zhí)行成功,將返回0,否則返回一個(gè)非零值。(2)mx-函數(shù)在C程序中使用MATLAB數(shù)據(jù)時(shí)還用到MATLAB提供的接口函數(shù)中的mx-函數(shù),以完成對(duì)mxArray對(duì)象的操作。MATLAB的矩陣運(yùn)算是以mxArray結(jié)構(gòu)體(C++中是mwArray類)為核心構(gòu)建的,mxArray結(jié)構(gòu)體的定義在MATLAB的extern\include\matrix.h文件中。【例11.7】創(chuàng)建MAT文件。11.2.3多媒體文件的讀寫MATLAB除對(duì)文本數(shù)據(jù)進(jìn)行操作外,還可以對(duì)圖像文件、WAV類型的音頻文件和AVI類型的視頻文件進(jìn)行讀寫。在3.5節(jié)介紹了圖像文件的讀寫函數(shù),下面介紹對(duì)音頻文件和視頻文件進(jìn)行讀寫的函數(shù)?!?info=mmfileinfo(filename):查詢音頻或視頻文件信息。● y=wavread(filename):讀取WAV格式的音頻文件?!?y=aviread(filename):讀取AVI格式的視頻文件?!?wavwrite(y,filename):以WAV格式輸出音頻文件。● aviobj=avifile(y,filename):將MATLAB的圖像序列生成AVI格式的視頻,建立AVI文件的句柄存放于aviobj中。11.3MATLAB編譯器MATLAB編譯器(Complier)是MathWorks公司為MATLAB開發(fā)環(huán)境提供的一個(gè)軟件工具,可以編譯M文件、MEX文件、MATLAB對(duì)象以及其他MATLAB代碼,生成基于Windows、UNIX等平臺(tái)的獨(dú)立應(yīng)用程序和C/C++共享庫(kù),這些源代碼經(jīng)過編譯鏈接生成不依賴MATLAB的可執(zhí)行程序、COM組件等11.3.1MATLAB編譯器的配置與使用使用MATLAB編譯器需要安裝一種MATLAB支持的C\C++語(yǔ)言編譯器1.編譯器配置應(yīng)用MATALB編譯器前需要對(duì)編譯器進(jìn)行配置。編譯器的配置文件是一個(gè)批處理文件,它包括一些關(guān)于編譯、預(yù)編譯和鏈接階段的編譯器的設(shè)置信息。編譯器配置方法如下。啟動(dòng)MATLAB,執(zhí)行命令:mbuild–setup按提示選取一種編譯器。這樣在進(jìn)行編譯操作時(shí),系統(tǒng)將會(huì)自動(dòng)使用默認(rèn)編譯器。2.DeploymentTool的使用MATLAB提供了一個(gè)圖形化編譯工具DeploymentTool,用于對(duì)M文件進(jìn)行編譯。M代碼可以編譯成獨(dú)立的應(yīng)用程序、C/C++共享庫(kù)、.NET組件、COM組件、Java組件、在Excel中使用的COM組件等?!纠?1.8】設(shè)工作文件夾下有mdemo.m文件,內(nèi)容如下:x=-10:0.1:10;y=sin(x);plot(x,y,'*');用MATLAB編譯器將mdemo.m文件生成一個(gè)獨(dú)立的應(yīng)用程序。①創(chuàng)建項(xiàng)目。②向項(xiàng)目中添加文件。③生成應(yīng)用程序。編譯成功后,在項(xiàng)目目錄的distrib目錄下,生成了以項(xiàng)目名作為主文件名的可執(zhí)行文件。運(yùn)行該文件,得到圖11.7所示的結(jié)果。經(jīng)過編譯生成的獨(dú)立應(yīng)用程序由兩部分組成:一個(gè)特定平臺(tái)的二進(jìn)制文件和一個(gè)包含MATLAB函數(shù)和數(shù)據(jù)的壓縮文件。11.3.2MATALBBuilder的使用MATLABBuilder作為MATALB編譯器的擴(kuò)展,需要MATLAB編譯器的支持。1.MATALBBuilderEXMATALBBuilderEX通過簡(jiǎn)單易用的圖形界面完成MATLAB函數(shù)到Excel插件的轉(zhuǎn)化,自動(dòng)生成DLL文件和相應(yīng)的VBA文件,這些轉(zhuǎn)換后的MATLAB函數(shù)可以被Excel電子表格直接使用,并且創(chuàng)建生成的DLL插件文件運(yùn)行速度遠(yuǎn)遠(yuǎn)超過直接使用VBA開發(fā)的算法。用MATLABBuilderEX將MATLAB函數(shù)轉(zhuǎn)化為Excel插件的方法如下。①創(chuàng)建一個(gè)MATLABBuilderEX類的ExcelAdd-in項(xiàng)目。②向項(xiàng)目中添加M函數(shù)文件。③生成組件。④打包組件。⑤安裝組件。⑥使用組件。2.MATLABBuilderNE使用MATLAB語(yǔ)言以及內(nèi)嵌的數(shù)學(xué)運(yùn)算、圖形處理、數(shù)據(jù)分析等功能完成快速原型設(shè)計(jì)、編程開發(fā)以及應(yīng)用程序的測(cè)試后,用戶可以通過MATLABBuilderNE將應(yīng)用打包,隨后可以將其集成到.NET應(yīng)用程序中。3.MATALBBuilderJAMATLABBuilderJA允許用戶在MATLAB環(huán)境內(nèi)開發(fā)算法,然后將這些算法轉(zhuǎn)化成Java類,以組件的形式發(fā)布到Java應(yīng)用程序中。11.4MATLAB與其他語(yǔ)言的接口接口是MATLAB與其他語(yǔ)言程序相互調(diào)用各自函數(shù)的方法,MEX文件使MATLAB可以直接調(diào)用或鏈接C/C++語(yǔ)言編寫的算法函數(shù),而MATLAB引擎使C/C++語(yǔ)言可以調(diào)用MATLAB函數(shù)。11.4.1MEX文件MEX(MATLABExecutable)動(dòng)態(tài)鏈接函數(shù)接口是MATLAB調(diào)用其它語(yǔ)言編寫的程序或算法的接口,通過mex命令將C、FORTRAN語(yǔ)言編寫的算法函數(shù)編譯成動(dòng)態(tài)鏈接程序,使之成為MATLAB的一個(gè)擴(kuò)展函數(shù)。在Windows系統(tǒng)中,MEX文件是DLL格式,使用DLL格式可以直接訪問Windows系統(tǒng)的各種資源,生成圖形用戶界面,還可以利用Windows的動(dòng)態(tài)數(shù)據(jù)交換能力,與其他的Windows應(yīng)用程序交換數(shù)據(jù)。MEX文件能夠被MATLAB解釋器調(diào)用執(zhí)行,在用法上和M函數(shù)文件類似,但MEX文件優(yōu)先于M文件執(zhí)行。1.MEX函數(shù)MEX函數(shù)用于從MATLAB環(huán)境中獲取必要的矩陣數(shù)據(jù)和相應(yīng)信息。所有MEX函數(shù)均在MATLAB的子文件夾extern\include中的頭文件mex.h得到聲明。2.MEX文件的建立C語(yǔ)言的MEX文件的源程序由如下兩個(gè)部分組成。(1)入口子程序mexFunction其作用是在MATLAB系統(tǒng)與被調(diào)用的外部子程序之間建立通信聯(lián)系,定義被MATLAB調(diào)用的外部子程序的入口地址、MATLAB系統(tǒng)和子程序傳遞的參數(shù)等。入口子程序的構(gòu)成如下:voidmexFunction(int
nlhs,mxArray*plhs[],int
nrhs,mxArray*prhs[]){……}函數(shù)中有4個(gè)參數(shù)nlhs、plhs、nrhs和prhs。nlhs是輸出數(shù)據(jù)的個(gè)數(shù),plhs是指向輸出數(shù)據(jù)的指針,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022-2023學(xué)年貴州省六盤水市鐘山區(qū)四年級(jí)(上)期末數(shù)學(xué)試卷
- Unit-4-My-home-Part-A-教案設(shè)計(jì)-小學(xué)英語(yǔ)四年級(jí)上冊(cè)-人教PEP版
- 2025年產(chǎn)品營(yíng)銷協(xié)議(2篇)
- 2025年個(gè)人果園承包合同(4篇)
- 2025年產(chǎn)品供應(yīng)與銷售代合同(三篇)
- 2025年買房書面合同協(xié)議范文(2篇)
- 2025年個(gè)人租房的合同常用版(4篇)
- 2025年產(chǎn)品委托銷售合同經(jīng)典版(三篇)
- 2025年個(gè)人工程合作協(xié)議范文(2篇)
- 農(nóng)業(yè)項(xiàng)目股權(quán)投資居間合同
- 2025年初中語(yǔ)文:春晚觀后感三篇
- Unit 7 第3課時(shí) Section A (Grammar Focus -4c)(導(dǎo)學(xué)案)-【上好課】2022-2023學(xué)年八年級(jí)英語(yǔ)下冊(cè)同步備課系列(人教新目標(biāo)Go For It!)
- 2025年上半年長(zhǎng)沙市公安局招考警務(wù)輔助人員(500名)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 2025河北邯鄲世紀(jì)建設(shè)投資集團(tuán)招聘專業(yè)技術(shù)人才30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學(xué)試卷
- 《基于新課程標(biāo)準(zhǔn)的初中數(shù)學(xué)課堂教學(xué)評(píng)價(jià)研究》
- 省級(jí)產(chǎn)業(yè)園區(qū)基礎(chǔ)設(shè)施項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)東方航空招聘筆試參考題庫(kù)含答案解析
- 預(yù)算績(jī)效評(píng)價(jià)管理機(jī)構(gòu)入圍投標(biāo)文件(技術(shù)方案)
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論