資源描述:
《基于COM技術(shù)的C#與Matlab混合編程.pdf》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、萬方數(shù)據(jù)第34卷場厶34第14期No.14計算機工程ConlputerEngineering2008年7月July2008·軟件技術(shù)與贅【據(jù)庫·文章編號·looo—3428(2∞8Jl“m87—03文獻標(biāo)識碼,A中圈分類號,TP3ll基于COM技術(shù)的C}}與Matlab混合編程姚光強,陳立平(國家農(nóng)業(yè)信息化工程技術(shù)研究中心,北京100097)摘要:提出基于組件對象模型(c0M)技術(shù)實現(xiàn)VisuaIc#與Matlab混合編程的2種方法,一種是通過c}}使用Matlab提供的自動化服務(wù),另一種是使用MatJabCoMBuilder將M語言文件編譯成COM組件供C#調(diào)用
2、。以地理信息系統(tǒng)中常用的空間插值分析為例給出了這2種方法的具體實現(xiàn)。對_兩者進行比較,提出了各自的適用范圍。結(jié)果表明使用cOM技術(shù)實現(xiàn)混合編程能充分發(fā)揮VisualC樣與Matlab各自的特點,提高程序開發(fā)和運行效率。關(guān)健訶:Visualc帆葺言;Matlab軟件;混合編程;組件對象模型IntegratedProgrammingBetweenC#andMatlabBasedonComponentobjectModelYA0Guang-qiang,CHENLi-pjng(NationalEnginee—ngResearchCenterforInfo肌atjonTec
3、hno】ogyinAgriculture,Beqing1O【)097)lAbstractlTwo印pmachesofintegratedpmgrammingbasedonComponent0bjectModeI(COM)areintroduced.0neutiJizes廿leautom“onserverpmVidedbyMatlab.TheothercompilestheMatlabprogramw“tteninMsc^ptinglanguaget0componentbyusingMatlabCOMbu釘de‘theninVokingitinⅥsualC#.111
4、eusuaIspatiaJinte叩olatjonalgori山minGISisimplementedbyt11esetwo印pmaches.111eadvaIltages卸dde艇tsofthemarediscussed.a(chǎn)ndthead印石Ve印plicationrangeissuggcsted.TheresultisthattheCoMbasedmethodsforintegradon,whichmal(efuUuseoft
5、letwoplaⅡ-omls,caIlspeedupsoftwaredeVeIopmentandimproVeitsperfo肌卸ce
6、.IKeywordslⅥsualC#;Matlab:integratedpmgramming;ComponentObjectM0del(COM)1概述Matlab是一種專門以矩陣形式處理數(shù)據(jù)的科學(xué)計算軟件,廣泛地應(yīng)用于數(shù)值分析、控制系統(tǒng)、圖像處理、數(shù)字信號處理等領(lǐng)域的分析、仿真和設(shè)計。它將高性能的數(shù)值計算和可視化集成在一起,具有編程簡單、數(shù)值計算和仿真能力強、易于擴展移植等優(yōu)點?。MatJab提供的高級語言——M語言是接近數(shù)學(xué)形式的語言,編程運算與人進行科學(xué)計算的思路和表達方式基本一致,使用簡便。但它是一種解釋型編程語言,執(zhí)行效率低,在開發(fā)應(yīng)用程序界面和對外圍設(shè)備
7、的控制能力上較差,程序的調(diào)試不便。c#是專門用于.NET的新編程語言,具有簡單易用、類型安全、執(zhí)行效率高等優(yōu)點,同時具有低級內(nèi)存訪問性和高效的數(shù)據(jù)訪問和設(shè)備操作能力。與Matlab相比,c}}開發(fā)應(yīng)用程序界面和操作外圍設(shè)備快捷高效,而開發(fā)科學(xué)計算和數(shù)值分析功能則較為困難,效率不高。因此實現(xiàn)c}}和Matlab的混合編程,由C#完成界面開發(fā)和端口操作任務(wù),利用Matlab提供的函數(shù)和功能完成數(shù)據(jù)分析計算和相關(guān)圖形生成,能夠?qū)烧叩膬?yōu)勢互補,提高編程效率。開發(fā)的軟件將具有友好的界面和較高的執(zhí)行性能,能夠擴展到更廣的應(yīng)用領(lǐng)域。實現(xiàn)c#和Matlab混合編程的關(guān)鍵是找到兩
8、者之間合適的接口辦法,使C}}方便高效地調(diào)用Matlab的功能并傳送和接收數(shù)據(jù),同時能夠在不進行修改或很小修改的情況下充分利用已有的Matlab資源。2COM技術(shù)組件對象模型(ComponetObjectModel,COM)是一種以組件為發(fā)布單元的對象模型,這種模型使各軟件組件可以用一種統(tǒng)一的方式進行交互。COM提供了組件之間進行交互的規(guī)范,也提供了實現(xiàn)交互的環(huán)境
9、2J。這種交互使得一種語言編寫的程序能調(diào)用另一種語言編寫的軟件組件,實現(xiàn)了與編程語言無關(guān)的軟件重用。調(diào)用端被稱為客戶,被調(diào)用端是組件對象,兩者的相互作用建立在簡單客戶,服務(wù)器模型機制基礎(chǔ)之上。組件對象以
10、動態(tài)鏈接的