




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第13章MATLAB外部程序接口技術(shù)13.1MATLAB與Office軟件的混合使用13.2MATLAB數(shù)據(jù)接口13.3MATLAB與其他語(yǔ)言的接口13.1MATLAB與Office軟件的混合使用為了在Word環(huán)境下調(diào)用MATLAB的計(jì)算功能,需要調(diào)用MATLAB的Notebook軟件工具,它為Word提供M-Book.dot模板。利用該模板創(chuàng)建的Word文檔通常稱為M-Book文檔。1.Notebook的安裝與啟動(dòng)>>notebook-setup13.1.1在Word中使用MATLAB2.Notebook菜單項(xiàng)M-Book模板定義了Word與MATLAB進(jìn)行通信的宏指令、文檔樣式和工具欄。3.單元的使用在MATLABNotebook中,凡是在Word與MATLAB之間進(jìn)行傳遞的內(nèi)容稱為單元(cell),它是Notebook與MATLAB交互的基本單位。(1)輸入輸出單元定義輸入單元的方法輸入單元執(zhí)行后產(chǎn)生藍(lán)色的輸出單元。(2)自動(dòng)初始化單元(3)單元組4.計(jì)算區(qū)計(jì)算區(qū)(calczone)是一個(gè)由普通Word文本、輸入單元和輸出單元組成的連續(xù)區(qū),用于描述某個(gè)具體的作業(yè)或問題。在計(jì)算區(qū)里,用戶可以根據(jù)描述問題的需要,安排段落、標(biāo)題、分欄,而不受計(jì)算區(qū)外的有關(guān)格式的約束。定義計(jì)算區(qū)的方法13.1.2在Excel中使用MATLAB通過SpreadsheetLink,可以在Excel工作區(qū)和MATLAB工作空間之間進(jìn)行數(shù)據(jù)交換,也可以使用插件方式在Excel中調(diào)用MATLAB的算法。1.SpreadsheetLink的安裝與啟動(dòng)2.SpreadsheetLink的操作(1)將Excel表格中的數(shù)據(jù)導(dǎo)出到MATLAB工作空間中(2)從MATLAB工作空間導(dǎo)入數(shù)據(jù)到Excel表格中(3)調(diào)用MATLAB函數(shù)進(jìn)行運(yùn)算13.2MATLAB數(shù)據(jù)接口MATLAB提供多種方法支持將磁盤文件和剪貼板中的數(shù)據(jù)導(dǎo)入到MATLAB的工作區(qū),最簡(jiǎn)單的辦法是使用數(shù)據(jù)導(dǎo)入向?qū)В赏ㄟ^在“主頁(yè)”選項(xiàng)卡“變量”命令組中選擇“導(dǎo)入數(shù)據(jù)”命令按鈕或在命令行窗口執(zhí)行uiimport命令來(lái)激活它),而在M文件中則可以使用MATLAB文件操作函數(shù)。13.2.1文件操作1.文件打開與關(guān)閉(1)fopen函數(shù)fid=fopen(filename,permission)r 以讀方式打開一個(gè)文件。w
以寫方式打開一個(gè)文件。a 打開一個(gè)文件,隨后的操作可在該文件末尾添加數(shù)據(jù)r+ 以讀和寫方式打開一個(gè)文件fopen默認(rèn)打開二進(jìn)制文件,如果打開的是文本文件,則需在上述允許方式后加t,如rt、wt等。例如:F1=fopen('old.txt','rt')F2=fopen('new.dat','r+')(2)fclose函數(shù)fclose函數(shù)用于關(guān)閉已打開的文件,其調(diào)用格式為:status=fclose(fid)2.文件的讀寫(1)fscanf函數(shù)fscanf函數(shù)用于讀取文本文件的內(nèi)容,并按指定格式存入矩陣,其調(diào)用格式為:[A,count]=fscanf(fid,fmt,size)例如:x=fscanf(fid,'%5d',100);y=fscanf(fid,'%5d',[10,10]);(2)fprintf函數(shù)fprintf函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中,其調(diào)用格式為:count=fprintf(fid,fmt,A)例13-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ù)除上述對(duì)文本文件進(jìn)行讀寫操作的函數(shù)外,讀取文本文件的函數(shù)還有fgetl和fgets,它們按行讀取數(shù)據(jù),其調(diào)用格式為:line=fgetl(fid)line=fgets(fid,nchar)例13-2讀出例13-1生成的文件demo1.txt中的數(shù)據(jù)。fid=fopen('demo1.txt','r');while1line=fgetl(fid);ifline<0breakenddisp(line)endfclose(fid);(4)textscan函數(shù)如果一個(gè)文件中的數(shù)據(jù)全部由ASCII字符組成,且數(shù)據(jù)間有間隔符(如空格、逗號(hào)、分號(hào)、制表位),則文件稱為有格式文件。有格式文件可以使用文本輸入函數(shù)textscan讀取數(shù)據(jù),函數(shù)調(diào)用格式為:C=textscan(fid,fmt,N,param,value)例13-3假定文件textdemo.txt中有以下格式的數(shù)據(jù):NameEnglishChineseMathmaticsWang 9998100Li 988970Zhang 809097Zhao 776587從該文件中將前3個(gè)數(shù)據(jù)讀入到grades的程序段如下:fid=fopen('textdemo.txt','r');grades=textscan(fid,'%s%d%d%d',3,'headerlines',1);(5)fread函數(shù)該函數(shù)從文件中讀入二進(jìn)制數(shù)據(jù),其調(diào)用格式為:[A,count]=fread(fid,size,precision,skip)例13-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);(6)fwrite函數(shù)fwrite函數(shù)按照指定的數(shù)據(jù)類型將矩陣中的元素寫入到文件中,其調(diào)用格式為:count=fwrite(fid,A,precision)例13-5建立一數(shù)據(jù)文件magic5.dat,用于存放5階魔方陣。程序如下:fid=fopen('magic5.dat','w');cnt=fwrite(fid,magic(5),'int32');fclose(fid);3.?dāng)?shù)據(jù)文件定位(1)fseek函數(shù)該函數(shù)用于定位文件位置指針,其調(diào)用格式為:status=fseek(fid,offset,origin)例如:fseek(fid,0,-1) %指針指向文件頭fseek(fid,-5,'eof') %指針指向文件尾前第5個(gè)字節(jié)(2)ftell函數(shù)該函數(shù)用來(lái)查詢文件指針的當(dāng)前位置,其調(diào)用格式為:position=ftell(fid)ftell函數(shù)的返回值為從文件頭到指針當(dāng)前位置的字節(jié)數(shù)。若返回值為-1,表示獲取文件當(dāng)前位置失敗。例13-6下列程序執(zhí)行后,變量four、position和three的值是多少?a=1:5;fid=fopen('fdat.bin','w');fwrite(fid,a,'int16');fclose(fid);fid=fopen('fdat.bin','r');status=fseek(fid,6,'bof');four=fread(fid,1,'int16');position=ftell(fid);status=fseek(fid,-4,'cof');three=fread(fid,1,'int16');status=fclose(fid);(3)feof函數(shù)該函數(shù)用來(lái)判斷當(dāng)前的文件位置指針是否到達(dá)文件尾部:status=feof(fid)當(dāng)?shù)竭_(dá)文件結(jié)束位置時(shí),測(cè)試結(jié)果為1,否則返回0。(4)ferror函數(shù)用來(lái)查詢最近一次輸入或輸出操作中的出錯(cuò)信息:message=ferror(fid)13.2.2MAT文件與應(yīng)用1.MAT文件save命令可以將MATLAB系統(tǒng)內(nèi)部數(shù)據(jù)保存為MAT文件,而load命令可以將磁盤上的MAT文件中的數(shù)據(jù)讀入到MATLAB系統(tǒng)中。MATLAB提供的用于操作MAT文件的API函數(shù)封裝于兩個(gè)標(biāo)準(zhǔn)庫(kù)文件中:libmat.lib和libmx.lib。前者用于對(duì)MAT文件的操作,后者用于對(duì)MAT文件中矩陣的操作2.C語(yǔ)言MAT函數(shù)用于在C程序中對(duì)MAT文件進(jìn)行操作。3.MAT文件的基本操作在C程序中,通過指向MAT文件的指針對(duì)文件進(jìn)行操作,定義指向MAT文件的指針的格式為:MATFile*mfp;(1)打開MAT文件mfp=matOpen(filename,mode)(2)讀寫MAT文件①
向MAT文件中寫入一個(gè)矩陣。matPutVariable(mfp,name,mp)matPutArrayAsGlobal(mfp,mp)②
獲取MAT文件中的變量列表。matGetDir(mfp,num)③
從MAT文件中讀取一個(gè)矩陣。matGetVariable(mfp,name)(3)關(guān)閉MAT文件。matClose(mfp)4.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)建的。5.MAT文件操作舉例例13-7創(chuàng)建對(duì)MAT文件進(jìn)行操作的C程序。編譯生成應(yīng)用程序的兩種方法。(1)利用MicrosoftVisualStudio2010集成環(huán)境(2)利用MATLAB編譯器13.3MATLAB與其他語(yǔ)言的接口MEX(MATLABexecutable)動(dòng)態(tài)鏈接函數(shù)接口是MATLAB調(diào)用其他語(yǔ)言程序的接口,通過mex命令將C、C++等語(yǔ)言編寫的函數(shù)編譯成動(dòng)態(tài)鏈接程序,使之成為MATLAB的一個(gè)擴(kuò)展函數(shù)。13.3.1MEX文件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)voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){…}(2)計(jì)算子程序(computationalroutine)包含所有完成計(jì)算功能的程序代碼,由入口子程序調(diào)用。例13-8編寫求兩個(gè)數(shù)的最小公倍數(shù)的C語(yǔ)言MEX文件。3.MEX文件的編譯MEX文件的編譯需要具備兩個(gè)條件:一是要求已經(jīng)安裝MATLAB應(yīng)用程序接口組件及其相應(yīng)的工具,另一個(gè)是要求有合適的C語(yǔ)言編譯器。MEX文件的編譯使用mex命令,如果第一次使用,需要配置mex采用什么編譯器。>>mex–setup編譯上述MEX文件,在MATLAB命令行窗口下輸入命令:>>mexc_mex.c13.3.2MATLAB引擎MATLAB引擎(engine)是用于和外部程序結(jié)合使用的一組函數(shù)和程序庫(kù),在C語(yǔ)言程序中利用MATLAB引擎來(lái)調(diào)用MATLAB中的函數(shù)。1.MATLAB引擎函數(shù)2.MATLAB引擎的使用首先需要將mxArray轉(zhuǎn)換成MATLAB中可操作的形式。①將mxArray轉(zhuǎn)換成MATLAB可理解的形式。一是用函數(shù)mxCreate來(lái)創(chuàng)建矩陣,然后用mxSetName
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年浙江省建筑安全員《B證》考試題庫(kù)
- 《公共政策學(xué)》題庫(kù)及答案 2
- 西安信息職業(yè)大學(xué)《商業(yè)倫理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年山東省聊城市高唐縣第二中學(xué)高三上學(xué)期12月月考?xì)v史試卷
- 武漢船舶職業(yè)技術(shù)學(xué)院《R語(yǔ)言與數(shù)據(jù)可視化》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南財(cái)經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院《斜視弱視學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025青海省安全員《C證》考試題庫(kù)
- 濰坊理工學(xué)院《經(jīng)濟(jì)統(tǒng)計(jì)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 臨夏現(xiàn)代職業(yè)學(xué)院《數(shù)字信號(hào)處理A》2023-2024學(xué)年第二學(xué)期期末試卷
- 平頂山學(xué)院《安全類專業(yè)寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東省廣州市天河區(qū)2024-2025學(xué)年八年級(jí)(上)期末物理試卷(含答案)
- - 《中國(guó)課件》揭示西安古都的千年歷史與文化
- 2025年度空調(diào)安裝驗(yàn)收及保修服務(wù)合同
- 急救護(hù)理學(xué)第十章災(zāi)難救護(hù)講解
- 《Maya三維模型制作項(xiàng)目式教程(微課版)》全套教學(xué)課件
- 2024年山東司法警官職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年北京電子科技職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024版消防設(shè)計(jì)質(zhì)量問題案例分析手冊(cè)建筑機(jī)電專業(yè)
- 《業(yè)財(cái)一體化實(shí)訓(xùn)教程-金蝶云星空V7.5》
- 人教版二年級(jí)數(shù)學(xué)下冊(cè)第一單元綜合測(cè)評(píng)卷(含答案)
- 社區(qū)意識(shí)形態(tài)工作2025年度工作計(jì)劃
評(píng)論
0/150
提交評(píng)論