基于Matlab的雷達(dá)系統(tǒng)仿真軟件包設(shè)計(jì)與實(shí)現(xiàn)
C語言的MEX文件源程序主要由兩個(gè)部分組成:第一部分是算法程序,用于完成實(shí)際工作;另一部分是入口子程序,它是算法程序與Matl-ab的接口。入口子程序?qū)崿F(xiàn)接口功能是通過在輸入指針數(shù)組中獲得算法程序所需的數(shù)據(jù),同時(shí)也能把計(jì)算結(jié)果返回到輸出指針數(shù)組。在這里mexFunction有著輸入/輸出與變量轉(zhuǎn)換的作用。參照本文編寫的mexrun.cpp文件,需要注意以下幾點(diǎn):
(1)void mexFunction(int nlhs,mxArray*plhs[],int nrhs,const mxArray*prhs[])。函數(shù)頭中nlhs是Matlab命令行方式下輸出參數(shù)的個(gè)數(shù);*plhs[]是一個(gè)mxArray結(jié)構(gòu)體類型指向所有輸出參數(shù)的指針數(shù)組;*prhs[]也是是一個(gè)mxArray結(jié)構(gòu)體類型指向所有輸入?yún)?shù)的指針數(shù)組;nrhs是輸入?yún)?shù)的個(gè)數(shù)。
(2)還需定義以下幾個(gè)變量:char*input_arg1,*input_arg2;int len1,len2,status1,status2。其中:*input_arg1,*input_arg2是兩個(gè)字符指針;len1,len2表示分配空間長(zhǎng)度;status1,status2是兩個(gè)數(shù)據(jù)空間變量。
(3)輸入的必須是單行字符串,行矢量,如下:

(4)把輸入的字符串拷貝到C字符串里面,如下所示:

按照上述流程設(shè)置好編譯環(huán)境和源程序后就可以編譯此工程,編譯成功后,在debug文件夾中會(huì)生成mexrun.dll鏈接庫文件。實(shí)驗(yàn)結(jié)果表明,只要把mexrun.dll鏈接庫文件放在Matlab的當(dāng)前工作區(qū)中,就可以在GUI設(shè)計(jì)中的m文件編寫中直接調(diào)用。
2 系統(tǒng)模塊的設(shè)計(jì)與實(shí)現(xiàn)
雷達(dá)系統(tǒng)軟件包的總體結(jié)構(gòu)采用分離式的多模塊結(jié)構(gòu),即各功能模塊彼此相互獨(dú)立,分別完成一定的功能。從方便用戶的角度出發(fā),設(shè)計(jì)的雷達(dá)系統(tǒng)軟件包采用多層次的分級(jí)菜單驅(qū)動(dòng)形式,先由主菜單選擇進(jìn)入各功能模塊的子菜單,在每一個(gè)功能模塊的菜單下,可以選擇參數(shù)設(shè)置、程序運(yùn)行、獲取幫助和返回上級(jí)菜單等操作。
2.1 系統(tǒng)實(shí)現(xiàn)方法
圖形用戶界面(graphical user interfaces,GUI)是用戶與計(jì)算機(jī)進(jìn)行信息交流的方式。計(jì)算機(jī)在屏幕顯示圖形和文本,用戶通過輸入設(shè)備如鍵盤、鼠標(biāo)等與計(jì)算機(jī)通信。GUI中包含各種控件,通過對(duì)控件設(shè)置一些事件響應(yīng)函數(shù),這些函數(shù)可以在控件創(chuàng)建或刪除等事件發(fā)生時(shí)執(zhí)行,從而實(shí)現(xiàn)特定事件觸發(fā)下需要的某些功能。這些事件響應(yīng)函數(shù)即是句柄圖形對(duì)象的回調(diào)函數(shù)。
本文使用GUIDE界面來對(duì)各種控件進(jìn)行布局,并利用屬性編輯器對(duì)每個(gè)控件進(jìn)行設(shè)置。軟件包的實(shí)驗(yàn)界面主要有登陸界面、主界面和各部分子界面。下面以登陸界面為例,說明圖形用戶界面的設(shè)計(jì)過程。
2.2 登陸界面設(shè)置
圖2表示GUIDE界面下對(duì)登錄界面進(jìn)行設(shè)置,其中包含了按鈕、靜態(tài)文本框、編輯框和坐標(biāo)軸。在對(duì)每種控件的屬性編輯器進(jìn)行編輯時(shí),Matlab對(duì)于每個(gè)控件都會(huì)在其相應(yīng)的m文件中初始化出一個(gè)回調(diào)函數(shù)。本文引用地址:http://www.bjwjmy.cn/article/187766.htm
首先,可以通過調(diào)用混合編程實(shí)現(xiàn)的mexrun.dll庫文件打開help文檔、MP3文件和MP4文件。以video按鈕為例,打開它的屬性編輯器可以看到其對(duì)應(yīng)的Tag屬性pushbuttonl,在其回調(diào)函數(shù)中加入如下代碼。video按鈕打開后是關(guān)于軟件包使用說明的一段簡(jiǎn)單視頻。
其次,編寫坐標(biāo)軸控件的屬性和構(gòu)造函數(shù),這里的坐標(biāo)軸函數(shù)是用來顯示一張JPEG格式的靜態(tài)圖片。Matlab提供imread()函數(shù)和imshow()函數(shù)來讀取和存放靜態(tài)圖片,函數(shù)中的X是一個(gè)矩陣。
c++相關(guān)文章:c++教程
評(píng)論