在.NET中應用MATLAB演算法

來源:互聯網
上載者:User
演算法 在科學研究和工程應用中,往往要進行大量的數學計算,其中包括矩陣運算。這些運算一般來說難以用手工精確和快捷地進行,而要藉助電腦編製相應的程式做近似計算。目前流行用Basic、Fortran和c語言編製計算程式, 既需要對有關演算法有深刻的瞭解,還需要熟練地掌握所用語言的文法及編程技巧。對多數科學工作者而言,同時具備這兩方面技能有一定困難。通常,編製程式也是繁雜的,不僅消耗人力與物力,而且影響背景工作處理序和效率。為克服上述困難,美國Mathwork公司於1967年推出了“Matrix Laboratory”(縮寫為MATLAB)軟體包,並不斷更新和擴充。目前最新的6.x版本(windows環境)是一種功能強、效率高便於進行科學和工程計算的互動式軟體包。其中包括:一般數值分析、矩陣運算、數字訊號處理、建模和系統控制和最佳化等應用程式,並集應用程式和圖形於一便於使用的Integration Environment中。在此環境下所解問題的MATLAB語言表述形式和其數學表達形式相同,不需要按傳統的方法編程。不過,MATLAB作為一種新的電腦語言,要想運用自如,充分發揮它的威力,也需先系統地學習它。但由於使用MATLAB編程運算與人進行科學計算的思路和表達方式完全一致,所以不象學習其它進階語言--如Basic、Fortran和C等那樣難於掌握。實踐證明,你可在幾十分鐘的時間內學會MATLAB的基礎知識,在短短几個小時的使用中就能初步掌握它.從而使你能夠進行高效率和富有創造性的計算。 MATLAB大大降低了對使用者的數學基礎和電腦語言知識的要求,而且編程效率和計算效率極高,還可在電腦上直接輸出結果和精美的圖形拷貝,所以它的確為一高效的科研助手。自推出後即風行美國,流傳世界。
MATLAB演算法是一個優秀的演算法,我們在軟體開發過程中,尤其是資料庫開發方面,要進行資料匯總、統計分析、然後根據匯總的資料產生圖表(包括柱圖、餅圖、四分圖、雷達圖等),這種需求甚為普遍。
由於MATLAB演算法具有強大的計算處理功能,所以在許多軟體中已經用到它,比如作個銷售趨勢預測,前提是基於以往的銷售資料,可以用MATLAB演算法對以往的銷售資料進行處理(如函數、矩陣的一系列運算,或者採用一些運籌學的知識進行資料處理),再由MATLAB演算法產生出相關資料的精美圖形輸出,得到一個具有科學理論依據的方案,把我們的管理思想融合到了電腦程式設計中,使軟體解決方案不是簡單的電算化工具,而是一個綜合許多學科的智慧的結晶!
微軟的.NET開發工具,結合資料庫SQL SERVER,是開發資料庫應用的最佳選擇!我們可以把SQL SERVER裡的資料用MATLAB演算法進行處理,還可以將自己寫的演算法封裝成COM,在.NET中引用就可以了。在使用的MATLAB演算法時,圖形輸出的功能往往被人忽略,下面的例子,就是採用的MATLAB出的圖形

首先在.NET中,引用matlab 的物件程式庫(Matlab Application(version 6.5) Type Library),筆者採用的是MATLAB 6.5 版本,然後在表單上加一個圖片框PictureBox1,用於顯示圖片;
一個Button1用於調用MATLAB,並載入圖形。

代碼:

Dim strMatLab As String '定義matlab語句字串
' 顯示正弦圖
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MatLab As Object
'建立matlab應用
MatLab = CreateObject("matlab.application")
'最小化matlab命令視窗
MatLab.MinimizeCommandWindow()
'matlab語句
strMatLab = "t=2:0.2:4*pi;y=sin(t);plot(t,y)"
'執行matlab演算法
matlab.Execute(strMatLab)
'產生一個JPG的圖形c:\Test1.jpg
matlab.Execute("print( gcf, '-djpeg', 'c:\Test1')")
'退出matlab,釋放資源
matlab.Quit()
MatLab = Nothing
'顯示在圖片框
PictureBox1.Image = New Bitmap("c:\Test1.jpg")
End Sub

' 顯示餅圖
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
strMatLab = "sale=[100 400 150 250 500];pie3(sale,[0 0 1 0 0],{'公司A','公司B','公司C','公司D','公司E'})"
matlab.Execute(strMatLab)
matlab.Execute("print( gcf, '-djpeg', 'c:\Test2')")
matlab.Quit()
matlab = Nothing
PictureBox1.Image = New Bitmap("c:\Test2.jpg")
End Sub

' 顯示三維螺旋線圖
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
strMatLab = "t=0:0.2:4*pi;plot3(sin(t),cos(t),t)"
matlab.Execute(strMatLab)
matlab.Execute("print( gcf, '-djpeg', 'c:\Test3')")
matlab.Quit()
matlab = Nothing
PictureBox1.Image = New Bitmap("c:\Test3.jpg")
End Sub

' 顯示立體波浪圖
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
strMatLab = "[X,Y,Z] = peaks(20);surfc(X,Y,Z);colormap hsv;axis ([-2 4 -6 8 -10 6])"
matlab.Execute(strMatLab)
matlab.Execute("print( gcf, '-djpeg', 'c:\Test5')")
matlab.Quit()
matlab = Nothing
PictureBox1.Image = New Bitmap("c:\Test5.jpg")
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
End Sub
總結:一般情況下,我們將自己的演算法在MATLAB中產生dll,供VB.NET調用此演算法,輸入一組資料,輸出一系列資料,而且MATLAB演算法比較簡單,一個命令就完成了許多功能,大大提高了開發效率!

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。