基于Matlab的雷達系統(tǒng)仿真軟件包設計與實現(xiàn)
C語言的MEX文件源程序主要由兩個部分組成:第一部分是算法程序,用于完成實際工作;另一部分是入口子程序,它是算法程序與Matl-ab的接口。入口子程序實現(xiàn)接口功能是通過在輸入指針數(shù)組中獲得算法程序所需的數(shù)據(jù),同時也能把計算結果返回到輸出指針數(shù)組。在這里mexFunction有著輸入/輸出與變量轉換的作用。參照本文編寫的mexrun.cpp文件,需要注意以下幾點:
(1)void mexFunction(int nlhs,mxArray*plhs[],int nrhs,const mxArray*prhs[])。函數(shù)頭中nlhs是Matlab命令行方式下輸出參數(shù)的個數(shù);*plhs[]是一個mxArray結構體類型指向所有輸出參數(shù)的指針數(shù)組;*prhs[]也是是一個mxArray結構體類型指向所有輸入參數(shù)的指針數(shù)組;nrhs是輸入參數(shù)的個數(shù)。
(2)還需定義以下幾個變量:char*input_arg1,*input_arg2;int len1,len2,status1,status2。其中:*input_arg1,*input_arg2是兩個字符指針;len1,len2表示分配空間長度;status1,status2是兩個數(shù)據(jù)空間變量。
(3)輸入的必須是單行字符串,行矢量,如下:
(4)把輸入的字符串拷貝到C字符串里面,如下所示:
按照上述流程設置好編譯環(huán)境和源程序后就可以編譯此工程,編譯成功后,在debug文件夾中會生成mexrun.dll鏈接庫文件。實驗結果表明,只要把mexrun.dll鏈接庫文件放在Matlab的當前工作區(qū)中,就可以在GUI設計中的m文件編寫中直接調用。
2 系統(tǒng)模塊的設計與實現(xiàn)
雷達系統(tǒng)軟件包的總體結構采用分離式的多模塊結構,即各功能模塊彼此相互獨立,分別完成一定的功能。從方便用戶的角度出發(fā),設計的雷達系統(tǒng)軟件包采用多層次的分級菜單驅動形式,先由主菜單選擇進入各功能模塊的子菜單,在每一個功能模塊的菜單下,可以選擇參數(shù)設置、程序運行、獲取幫助和返回上級菜單等操作。
2.1 系統(tǒng)實現(xiàn)方法
圖形用戶界面(graphical user interfaces,GUI)是用戶與計算機進行信息交流的方式。計算機在屏幕顯示圖形和文本,用戶通過輸入設備如鍵盤、鼠標等與計算機通信。GUI中包含各種控件,通過對控件設置一些事件響應函數(shù),這些函數(shù)可以在控件創(chuàng)建或刪除等事件發(fā)生時執(zhí)行,從而實現(xiàn)特定事件觸發(fā)下需要的某些功能。這些事件響應函數(shù)即是句柄圖形對象的回調函數(shù)。
本文使用GUIDE界面來對各種控件進行布局,并利用屬性編輯器對每個控件進行設置。軟件包的實驗界面主要有登陸界面、主界面和各部分子界面。下面以登陸界面為例,說明圖形用戶界面的設計過程。
2.2 登陸界面設置
圖2表示GUIDE界面下對登錄界面進行設置,其中包含了按鈕、靜態(tài)文本框、編輯框和坐標軸。在對每種控件的屬性編輯器進行編輯時,Matlab對于每個控件都會在其相應的m文件中初始化出一個回調函數(shù)。本文引用地址:http://www.ex-cimer.com/article/187766.htm
首先,可以通過調用混合編程實現(xiàn)的mexrun.dll庫文件打開help文檔、MP3文件和MP4文件。以video按鈕為例,打開它的屬性編輯器可以看到其對應的Tag屬性pushbuttonl,在其回調函數(shù)中加入如下代碼。video按鈕打開后是關于軟件包使用說明的一段簡單視頻。
其次,編寫坐標軸控件的屬性和構造函數(shù),這里的坐標軸函數(shù)是用來顯示一張JPEG格式的靜態(tài)圖片。Matlab提供imread()函數(shù)和imshow()函數(shù)來讀取和存放靜態(tài)圖片,函數(shù)中的X是一個矩陣。
c++相關文章:c++教程
評論