OPNET與MATLAB的聯合模擬方法

來源:互聯網
上載者:User

      有關OPNET和MATLAB的聯合模擬方法,在參考網上大家的分享的東西和一些書籍之後,我終於試成功了,現將過程分享給他家,一起學習交流~

主要過程如下:

  1. 配置OPENT的環境:在Edit-->preference中:(我的MATLAB安裝在D盤根目錄中)

l Complication的設定

Comp_flags_common中添加/ID:MATLAB/extern/include,這裡D:/MATLAB為MATLAB的安裝目錄,這個設定可以使編譯器中包含一些必要的MATLAB標頭檔。

l Link的設定

添加值/LIBPATH:”D:/MATLAB/extern/lib/win32/microsoft/msvc60”到變數Bind_shobj_flag中;Bind_shobj_lib的值設定為libmx.lib
libmat.lib libeng.lib,通過該設定,OPNET中就可以調用到MATLAB的引擎函數庫。

l 環境變數設定:

include中添加:D:/MATLAB/extern/include;

Lib中添加:D:/MATLAB/extern/lib/win32/microsoft;

PATH中添加:D:/MATLAB/bin/win32。

 

    2.   編程指南

       1) 添加標頭檔 #include “engine.h”,開啟計算引擎ep=engOpen();

       2) 定義OPNET中的變數,如double* t;

       3) 定義MATLAB的mx介面的資料結構 mxArray* T,並建立矩陣,使用函數T=mxCreateDoubleMatrix(3,2,mxREAL)建立3行2列的實數矩陣;

       4) 將double* t的值轉換到T中,使用語句memcpy(mxGetPr(T),t,6*sizeof(double));

       5) 將OPNET中的T引入到MATLAB工作空間中:使用函數engPutVariable(ep,"T",T),其中ep為 Engine* ep;

       6) 進行MATLAB計算,使用函數engEvalString,可以執行簡單的MATLAB指令如:engEvalString(ep,“polt(T,T)”);也可以執行自訂的m檔案中的函數:如 engEvalString(ep,“path(path,‘m檔案的路徑’)”);engEvalString(ep,“m檔案的函數”);

       7) 如果有傳回值,使用函數接收到傳回值mxArray* T1=engGetVariable(ep,"T");

       8) 將接收回的的傳回值轉換成OPNET中的資料類型,如還是double* t1,使用函數t1 = (double *) mxGetData(T1);

       9) 銷毀所有的mxArray類型資料,使用函數:mxDestroyArray(T);

     10) 關閉計算引擎 engClose(ep);

 

所有這些就可以完成OPNET和MATLAB的聯合模擬了~~~~

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.