高慧

摘要
MATLAB有優秀的數值計算和仿真分析能力,相應的C#作為一種面向對象設計語言,其數據處理和成像功能的實現相對困難,本論文結合實際實例,將MATLAB成功的嵌入到C#中,通過基于COM組件的混編技術,實現了基于遺傳算法的數據處理和成像。
【關鍵詞】MATLAB C# COM組件 數據成像
1概述
MATLAB是由美國MathWorks公司推出的一款數學軟件,主要功能有算法開發、數據數據分析和可視化研究、數值計算等。其高效率的計算功能將用戶從繁雜的數學運算中解脫,同時,其強大的圖形圖像處理能力、簡易的編程語言以及友好的界面給用戶更簡便和快捷的體驗。正因如此,在許多的工程領域和學科中,MATLAB成為了計算機輔助設計以及仿真研究的首選工具。
NET技術的核心是公共語言運行時(CLR)。CLR提供了一個應用程序接口(API),使得程序員能夠調用一組例程功能,從程序實現的繁瑣細節中脫身出來,不需考慮底層的源碼和程序內部工作機制。VisualC#.NET是VisualStudio.NET軟件開發包的重要組成部分,其中,C#編程語言具有面向對象的特征。C#給程序設計帶來了新的功能和優勢,逐漸成為開發界面應用程序。
MATLABCOMBuilder模 塊 是 由MathWorks公司自MATLAB6.5開始,推薦于混合編程的一項技術。在工程應用中,上位機軟件需要對采集樣本進行極為復雜的科學運算,涉及到算法分析和設計,并需要反饋給工程師和用戶可視化的圖形界面。基于COM組件的混編技術,結合了MATLAB強大的科學運算能力,又發揮了VisualC#.NET用戶應用程序界面設計和開發的優點,應用前景頗為廣泛。
2 COM組件技術的具體實現
2.1前期準備
(1)環境部署。 安裝VS2010,MATLAB,在MATLAB中,找到MCRInstallexe安裝包并安裝。
(2)數據分析。根據實際工程采樣結果和期望值,設計相應的算法實現。并根據實際需求擬定數據成圖方式和類別。
2.2生成COM組件
(1)在MATLAB中編寫數據處理程序以及數據成圖的M文件。
(2)在MATLAB中配置編譯器,在MATLAB的命令窗口中,輸入mbuild-setup,根據提示將編譯器設置為相應版本。在MATLAB命令窗口中運行deploy,將MATLAB函數轉變成NET的編譯庫,在NewProjectSettings窗口創建一個新的Project,鍵入組件名稱和類名。將編寫好的M文件加入新建的工程中,生成的最終的dll文件。
2.3 vs2010對COM組件進行調用
(1)在VS2010界面下的項目工程中右鍵單擊,添加生成的dll文件引用。
(2)在C#.NET中創建包含COM組件中方法的類的實例。在MATLAB安裝路徑下的toolbox里找到MWArray.dll并添加。
(3)將MATLAB窗口嵌入到vs的winform中。分別使用到Windows操作系統中的4個API函數:FindWindoW、SetParent、SetWindowLong、MoveWindow.
3工程實例
3.1 MATLAB繪圖程序
pcolor(zz);%繪制數據的二維顏色變化圖
set(gca,ytick,[1:1:5])
axis([1 91 5l);
set(gca,YDir',reverse);
fm= findall(gcf,'type,uimenu);%找到標準菜單,句柄返回給fm。
ft= findall(gcf,type,uipushtool,-or,type,uitoggletool);%找到工具欄,句柄返回給ft。
st= findall( gef,‘To oltip,‘ZoomIn,-or‘To oltip,‘Zo omOut,‘-or,‘Tooltip,‘Rotate3D,‘or,‘Tooltip,‘Print Figure);
3.2 vs 2010嵌入的實現
IntPtr hChild;//子窗口句柄
IntPtr hParent;∥父窗口句柄
hParent= dll.FindWindow(null, this.Text);
hChild= dll.FindWindo、v(null, “Figurell”);
dll.SetParent(hChild, hParent);
dll.SetWindowLong(hChild, -16,369164288);
dll.MoveWindow(hChild,0,O,this.Width-324, this.Height, true);}
3.3效果圖
圖1為MATLAB窗口嵌入到vs2010窗口中的實例。用戶可以方便的查看實際場地情況。
參考文獻
[1]岳玉芳,尤忠生,張玉雙.基于COM的VB與MATLAB混合編程[J].計算機工程與設計,2005 (01): 61-62.
[2]王昊亮,李剛.VisualC#程序設計教程[M].北京:清華大學出版社,2004.
[3]潘愛民.COM原理及應用[M].清華大學出版社,2003.