电竞比分网-中国电竞赛事及体育赛事平台

分享

VS2008中C#調(diào)用Matlab生成的DLL文件

 昵稱10428894 2012-07-16

1、創(chuàng)建一個(gè)簡單的.m文件

打開Matlab 2009a,新建一個(gè).m文件,輸入如下代碼:

function result=twice(inputvar);
result=2*inputvar;

將代碼保存為twice.m文件,如圖所示。

image

2、使用Matlab DeployTool生成.Net組件

在Matlab 2009a的Command Window中輸入deploytool并回車,如圖所示。

image

就可以打開Matlab的DeployTool,如圖所示。

image

在DeployTool窗體中,點(diǎn)擊新建按鈕,打開新建項(xiàng)目對話框,如圖所示。

image

在左邊的列表中選擇MATLAB Builder NE,并在右邊的列表中選擇.NET Component,我們將這個(gè)工程命名為twice.prj,并點(diǎn)擊OK,則進(jìn)入項(xiàng)目設(shè)置界面,如圖所示。

image

在Twice文件夾中添加我們剛才建好的.m文件,如圖所示。

image

點(diǎn)擊編譯按鈕或使用快捷鍵Ctrl+B則對該工程進(jìn)行編譯。編譯完成后的主窗口如圖所示。

image

3、創(chuàng)建一個(gè)測試用的Windows應(yīng)用程序,將其命名為MatlabTest,如圖所示。

image

4、添加對MWArray.dll的引用

MWArray.dll一般位于[Matlab安裝位置]\R2009a\toolbox\dotnetbuilder\bin\win32\v2.0文件夾中,我們注意到Matlab 2009a對應(yīng)的MWArray.dll是2.9.0.0版本的。在進(jìn)行Matlab版本升級(jí)的時(shí)候,比較頭疼的就是這個(gè)dll。

image

因?yàn)榘姹旧?jí)意味著之前生成的dll都需要重新生成。關(guān)于版本升級(jí)的問題,我將在后面的博文中詳細(xì)介紹。

之所以添加MWArray.dll,是因?yàn)樵谶@種混合編程方式下,我們經(jīng)常要

using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;

5、添加對Matlab生成的twice.dll的引用。

6、添加窗體中相應(yīng)的組件。

添加一個(gè)Label控件,并修改其Text屬性為“計(jì)算結(jié)果”;

添加一個(gè)Label控件,用于顯示計(jì)算結(jié)果;

添加一個(gè)Button控件,用于執(zhí)行計(jì)算方法。

設(shè)計(jì)好后的Form1窗體如圖所示。

image

7、編寫相應(yīng)的后臺(tái)代碼。

 

C#代碼 復(fù)制代碼 收藏代碼
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8. using MathWorks.MATLAB.NET.Arrays;   
  9. using twice;   
  10.     
  11. namespace MatlabTest   
  12. {   
  13.     public partial class Form1 : Form   
  14.     {   
  15.         public Form1()   
  16.         {   
  17.             InitializeComponent();   
  18.         }   
  19.     
  20.         private void button1_Click(object sender, EventArgs e)   
  21.         {   
  22.             int i = 5;   
  23.             Twice c = new Twice();   
  24.             MWArray result = c.twice((MWArray)i);   
  25.             this.label2.Text = result.ToString();   
  26.         }   
  27.     }   
  28. }  
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. using MathWorks.MATLAB.NET.Arrays;  
  9. using twice;  
  10.    
  11. namespace MatlabTest  
  12. {  
  13.     public partial class Form1 : Form  
  14.     {  
  15.         public Form1()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
  19.    
  20.         private void button1_Click(object sender, EventArgs e)  
  21.         {  
  22.             int i = 5;  
  23.             Twice c = new Twice();  
  24.             MWArray result = c.twice((MWArray)i);  
  25.             this.label2.Text = result.ToString();  
  26.         }  
  27.     }  
  28. }  

8、執(zhí)行并查看結(jié)果

image

在代碼中輸入了一個(gè)變量i并為其賦值5,可以看到經(jīng)過調(diào)用Matlab計(jì)算,順利返回計(jì)算結(jié)果10。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多