Visual-C#與Matlab混合編程示例_第1頁
Visual-C#與Matlab混合編程示例_第2頁
Visual-C#與Matlab混合編程示例_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、VisualC#與Matlab混合編程由于VisualC#與Matlab混合編程的資料并不多,本文通過一個實例來闡述VisualC#與Matlab混合編程的方法。1. 一、混合編程的4種方式通過從Matlab的*.m文件中生成C語言版本的DLL1) 在Matlab中寫好m文件;2) 使用Matlab的編譯器,編譯為C#能識別的DLL文件;2. 建立C#工程,在工程中引用上一步生成的文件;C#調(diào)用Matlab工作區(qū)計算并返回結(jié)果主要使用engOpen,engClose,engPutVariable,engEvalString,engGetVariable函數(shù)進(jìn)行操作。大致過程如下:MatlabC

2、Sharp.engPutVariable(ep,ml_a,mx_a);MatlabCSharp.engPutVariable(ep,ml_b,mx_b);MatlabCSharp.engEvalString(ep,ml_c=ml_a+ml_b;);3. mx_c=MatlabCSharp.engGetVariable(ep,ml_c);使用MatlabDeployTool生成COM組件單擊菜單NewDeploymentProject-MATLABBuilderNE-GenericCOMComponent1) 添加相應(yīng)的M文件2) 保存,編譯3) 新建C#工程,引用生成的DLL文件。4. 使用M

3、atlabDeployTool生成.Net組件單擊菜單NewDeploymentProject-MATLABBuilderNE-.NetComponent1) 添加相應(yīng)的M文件2) 保存,編譯新建C#工程,引用生成的DLL文件。由于Matlab與C#的數(shù)組有一定的差異,但傳遞參數(shù)時,要轉(zhuǎn)換成Matlab的參數(shù)類型,因此要加入以下兩句。usingMathWorks.MATLAB.NET.Arrays;usingMathWorks.MATLAB.NET.Utility;而且要添加MWArray這個Reference,一般安裝完MATLABBuilderNE就有了,目錄為:/toolbox/dotn

4、etbuilder/bin/win32/v2.0/MWArray.dll。由于第四種方式用的最多,下面以第四種方式,闡述VisualC#與Matlab混合編程的過程。二、VisualC#與Matlab混合編程的過程1. 一生成.NETDLL文件編寫MatlabM函數(shù)functiontsum=sumab(a,b)tsum=sum(a,b);將以上函數(shù)保存為sumab.m文件。2. 建立Matlab工程1單擊File-New-DeploymentProject菜單,出現(xiàn)下面的窗體:輸入工程名test_combination_matlab_c,選擇MATLABBuilderNE-.NETCompon

5、ent,然后點擊OK按鈕。2將sumab.m文件加入工程,點擊DeploymentTool窗體的settings按鈕,如下列圖所示:DploynentToolIXx倒|蠱test_combination_mb_c(.NETCom|_ITert_combination_rri-atlab_c七sumab.mOtherfilesVGenerateWrboeOulputSettinge.在出現(xiàn)的窗體中,設(shè)置.NETFramework版本,其版本號一定要與C#所用的版本號一致,否則,會出問題。3.編譯matlab工程。點擊Build按鈕曲,編譯工程。編譯后,在工程目錄下的Distrib子目錄里生成C#

6、中使用的DLL文件test_combination_matlab_c.dll二在C#中調(diào)用matlab中的M函數(shù)1.引用matlab中生成的DLL文件。打開VisualStudio,新建一個WindowsApplication類型的C#工程,筆者建的是Test項目。建好后,在SolutionExplorer里,鼠標(biāo)右鍵單擊References-AddReferences-Browse,加入生成的test_combination_matlab_c/Distrib/test_combination_matlab_c.dll;重復(fù)操作,再加入Matlab目錄下的另一個dll文件,/toolbox/d

7、otnetbuilder/bin/win32/v2.0/MWArray.dll。Form里面,加入三個Label,二個Textbox組件以及一個Button組件,如下列圖所示:2.編寫代碼的命注意要引入MWArray.dll和test_combination_matlab_c.dll名空間。代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Form

8、s;/引入命名空間usingMathWorks.MATLAB.NET.Arrays;usingMathWorks.MATLAB.NET.Utility;usingtest_combination_matlab_c;namespaceTestpublicpartialclassForm1:FormpublicForm1()InitializeComponent();privatevoidbutton1_Click(objectsender,EventArgse)Test_combination_matlab_csumob=newtest_combination_matlab_c.Test_com

9、bination_matlab_c();try(/整數(shù)例如MWArraya=(MWNumericArray)newint(System.Convert.ToInt16(textBox1.Text);MWArrayb=(MWNumericArray)newint(System.Convert.ToInt16(textBox2.Text);MWNumericArrayc=(MWNumericArray)sumob.sumab(a,b);this.label2.Text=c.ToString();/數(shù)組例如MWNumericArrayaa=newint2,21,2,3,4;MWNumericArraybb=newint2,25,6,7,8;MWArraycc;c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論