搜尋此網誌

2015年9月2日 星期三

matlab發布成.Net可呼叫的dll

這篇是要分享如何從好用的matlab
編輯轉譯成.Net可以呼叫的dll
版本 :
(1) Matlab R2011a 
(2) Visual Studio 2010 C# 
(3) 系統 : Windows 7 64bits

step 1 : 首先我們先創建一個 .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之後的結果。
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using twice;
  6. using MathWorks.MATLAB.NET.Arrays;
  7. using MathWorks.MATLAB.NET.Utility;
  8.  
  9.  
  10. namespace MatlabToCsharpDotNetLibSample
  11. {
  12.     class Program
  13.     {
  14.         static void Main(string[] args)
  15.         {
  16.  
  17.             int i = 5;
  18.             Twice c = new Twice();
  19.             MWArray result = c.twice((MWArray)i);
  20.             System.Console.WriteLine(Convert.ToInt16(result.ToString()) + 5);
  21.             System.Console.ReadKey();
  22.  
  23.         }
  24.     }
  25. }

沒有留言:

張貼留言