2013年8月22日 星期四

[技巧] Matlab 創建 .dll 元件到 C# 使用

常常有時候在撰寫一些程式碼的時候,會遇到很多數學式子。

然而一般時刻很常且會直覺地想到用Matlab  去做數值分析。

這邊介紹利用Matlab 產生的.dll 元件再去轉到 C# 跑output 的方法。

版本 :  1 ) Matlab R2012b  32 bits

           2 ) Visual Studio 2010 C# 32 bits

系統 :  Windows 7  64bits


step1 : 首先我們先創建一個 .m  檔,程式碼如以下部分:



這是一個簡單的將數值(input) , 乘2之後,回傳結果的一個Procedure。










step2 :接下來在Matlab 的 Command Windows 下。輸入 deploytool 。








step3 :  輸入 Project Name (此處為Twice,以及選擇Type: .Net Assembly)











step4 : 然而在Build 視窗下,創建Class (Twice)並且加入剛剛寫好的twice.m 檔









step5: 記得在 Package 視窗下 ,也要加入 twice.m檔。

ˇ










step6: 做好一切準備之後,開始建置吧!







step 7: 開啟 Visual Studio,並且建立一個  C# Console 應用程式

再參考部分加入剛剛創建好的.DLL 檔。(路徑位於專案資料夾裡面)

(e.g) C:\Twice\src\twice.dll

















step 8: 並且加入Matlab 的型態變數陣列.dll 檔

預設路徑: (C:\Program Files (x86)\MATLAB\R2012b\toolbox\dotnetbuilder\bin\win32\v2.0)

















step 9: 在開頭引用 以下宣告。

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

step10 :撰寫程式碼部分。

            int i = 5;
            Twice c = new Twice();
            MWArray result = c.twice((MWArray)i);
            System.Console.WriteLine(Convert.ToInt16(result.ToString()) + 5);
            System.Console.ReadKey();



 step11 : 可以看到結果為輸入5之後 ,透過twice.m 輸出為10之後再加5之後的結果。










(完整程式碼如下 : )

1 則留言: