matlab和c#聯合仿真之一(VS2010,Matlab2012a)


在本篇博文中,我想通過一個簡單的例子來詳細介紹C#是如何使用Matlab DeployTool生成.Net組件的。

除了本文以外,大家還可以在MATLAB C#混合編程demo這個新浪播客中觀看視頻。

開發環境為:VS2010 + Matlab2012a

1、創建一個簡單的.m文件

打開Matlab 2012a,新建一個.m文件,輸入如下代碼:

function myplot(a,b)
m = 1:a;
n = 1:b;
plot(m,n);

注意這個函數是沒有輸出的。

如果需要多個輸入輸出,可以用varargin和varargout參數。

將代碼保存為myplot.m文件。

 

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

在Matlab 2012a的Command Window中輸入deploytool並回車,就可以打開Matlab的DeployTool,如圖所示。

 

在name中輸入工程名myplot.prj,並選擇type:.net assembly。確定。則進入項目設置界面,如圖所示。

點擊add class 新建一個類,默認為class1,再在類下面添加文件,本文只有一個文件myplot.m,如果有和該函數相關的多個文件,都應該添加到這個類下面,添加后如圖所示。

點擊編譯按鈕或使用快捷鍵Ctrl+B則對該工程進行編譯。編譯后生成的dll文件放在同名目錄myplot\distrib下,同時myplot\src下也有個同名dll,效果也應該一樣。

 

3、創建一個測試用的c# WPF應用程序。

 

4、添加對MWArray.dll的引用

MWArray.dll一般位於[Matlab安裝位置]\R2012a\toolbox\dotnetbuilder\bin\win32\v2.0文件夾中,我們注意到Matlab 2012a對應的MWArray.dll是2.12.0.0版本的。在進行Matlab版本升級的時候,比較頭疼的就是這個dll。

因為版本升級意味着之前生成的dll都需要重新生成。關於版本升級的問題,我將在后面的博文中詳細介紹。

之所以添加MWArray.dll,是因為在這種混合編程方式下,我們經常要

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

右鍵reference,add reference,添加MWArray.dll和myplot.dll引用,同時在函數聲明中調用,如圖:

 

5、調用myplot函數。

myplot.Class1 b = new myplot.Class1();
b.myplot(0, 10, 10);

注意第二句輸入了三個參數,第一個參數指的是輸出參數的個數,由於沒有輸出參數,所以置0,好像這是matlab2012的新規則,老版本的有輸出參數的例子參見參考文獻。另外調用matlab生成的dll中的函數的時候一定要注意輸入參數的類型,我的經驗是能確定類型的盡量固定好類型,否則會出莫名其妙的錯誤。

 

參考文獻:

1. http://www.cnblogs.com/horizon_king/archive/2011/01/21/1941220.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM