C MATLAB程式設計

2021-06-20 10:20:18 字數 1467 閱讀 1904

最近在做乙個asp.net**程式,有個需求是利用離散點生成等高線,一開始研究了半天如何生成等高線的思想,後來感覺太麻煩了,想試著用matlab做一下。基本思想是:先在matlab裡寫好m檔案,裡面包括乙個函式。然後將m檔案編譯成dll庫供後台呼叫,思想很簡單,但有些設定比較麻煩,應該是作業系統或matlab軟體本身版本的問題,記錄以下:

1、開發工具:vs2010+ matlab 2012;

2、安裝matlab(注意版本問題,之前裝了matlab2010,但是只是除錯過程中是可行的,發布成**之後呼叫matlab生成的dll就不工作了,找了半天沒找到原因,後來試著裝了乙個新版本matlab 2012,好了)

3、安裝mcrinstaller.exe(路徑:d:\program files\matlab\r2012b\toolbox\compiler\deploy\win32)  

4、設定環境變數:

我的電腦-屬性-高階-環境變數-系統變數-path-編輯,在變數值輸入框中,不要刪除以前的字串,在最前面加入mcr的安裝路徑,如:"d:\program files\matlab\matlab compiler runtime\v80\bin\win32;" 然後確定、儲存、重啟電腦。(我就是不知道需要這兩步,老是在c#建立matlab的訪問物件時,出現:「***的型別初始值設定項引發異常。」,完全不理解是什麼原因,被耽擱了大量時間,直到安裝了matlab 2008b,仔細閱讀它生成的readme.txt才知道)

5、設定matlab編譯環境。

在matlab的command window中輸入mbuild -setup顯示如下

>> mbuild -setup

6、編寫m檔案

7、在matlab中呼叫deploytool 命令編譯m檔案,生成動態鏈結庫dll

8、在vs工程中引用生成的dll,同時還要載入mwarray.dll鏈結庫

9、引用matlab檔案及核心**,注意matlab的傳值引數型別,cont為生成的dll鏈結庫,ccont為類名。 

using mathworks.matlab.net.arrays;

using mathworks.matlab.net.utility;

using cont;

....

ccont myc = new ccont();

mwstructarray res = (mwstructarray)myc.contour((mwnumericarray)x11, (mwnumericarray)x21, (mwnumericarray)y11, (mwnumericarray)y21,

(mwnumericarray)x_num1, (mwnumericarray)y_num1, (mwnumericarray)zarr.toarray());

10、ok!

應用matlab第一次載入時執行還是比較慢的,但計算確實比較方便。在執行的時候可以利用多執行緒或ajax技術,提高使用者介面友好性。

c matlab 混合程式設計

混編終是乙個繞不開的石頭鴨 so do it!我的版本是 vs2017 matlab2016a matlab中的程式處理 1.需要將主程式寫為函式形式,例如我這個主程式matdll,形參三個 從c 獲取,包括兩個c char 轉為matlab char,乙個float 轉為三維陣列 返回值乙個 返回...

Linux下C ,matlab混合程式設計

使用python呼叫c 呼叫matlab生成的動態庫檔案 1 設定編譯器為gcc,在matlab 命令列依次執行命令mex setup和mbuild setup.2 編寫matlab指令碼 3 生成動態庫檔案。mcc w cpplib libmyfunc t link lib myfunc.m c ...

linux系統中的C MATLAB混合程式設計

我研究的是影象盲去模糊演算法,因為前期msdecomp預處理是在linux下用c 寫成的,而後面的優化過程均是用matlab寫成的,因此我需要將這兩部分的 融合在一起。這裡記錄的是我在虛擬機器中在linux系統下實現matlab呼叫c 函式的過程。首先安裝vmware,並選擇系統檔案為ubuntu1...