




免費預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
此文檔收集于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系網(wǎng)站刪除Matlab和C語言聯(lián)合編程_學(xué)習(xí)記錄2014年8月13日1 概述為了提高Matlab對IQ數(shù)據(jù)計算的速度,決定采用Matlab調(diào)用C語言編寫的核心算法的方法,來提高速度。在學(xué)習(xí)中,主要參考了精通Matlab與C/C+混合程序設(shè)計(第3版),劉維編著,第80頁第180頁的內(nèi)容。C程序在“H:QXLDNJU_CPolMatlab敏視達雷達IQ數(shù)據(jù)的信號處理C” 目錄下,其主程序是mexFun_Radar_Data_DSP.c,其它幾個C文件是子函數(shù)。程序是參照了Fun_Radar_Data_DSP.m 和以前寫過的PDRadarDSP.cpp。為了提高速度,程序大量采用了Intel 的IPP 算法庫和32bit的浮點運算。程序中的各種信號處理算法,以及其中的各種系數(shù),是完全按照Fun_Radar_Data_DSP.m 程序?qū)懙模ǖ珱]有數(shù)據(jù)顯示的功能,并且雙重頻處理、高階的MultiLag算法等,暫時沒有實現(xiàn))??紤]到充分發(fā)揮Matlab和C語言各自的優(yōu)勢,因此并沒有把全部的Matlab程序都改用C語言來實現(xiàn),而僅僅把耗時最長的Fun_Radar_Data_DSP.m用C語言實現(xiàn)了。今后,可以將GMAP等先進的算法也用C語言來實現(xiàn),因為這些算法用Matlab編寫時,難以實現(xiàn)“向量化計算”,造成計算速度很慢。而用C語言編寫就不存在“向量化”的難題,計算速度應(yīng)該很快。2 編程方法2.1 編譯器的設(shè)置先在matlab下執(zhí)行:mex -setup進行C語言編譯器的設(shè)定。注意要選擇VC2010作為編譯器(不要采用Matlab自帶的編譯器)。并且要注意:如果要把編譯好的程序在沒有VC2010的電腦上運行,則要安裝VC2010的可發(fā)行包。然后,運行:mex CmexFun_Radar_Data_DSP.c 就可以將 C 目錄下的“” 文件,編譯為“mexFun_Radar_Data_DSP.mexw32”,就可以被matlab直接調(diào)用了。如果采用了-g選項,即運行:mex CmexFun_Radar_Data_DSP.c -g就不但可以生成 mexFun_Radar_Data_DSP.mexw32文件,還能生成“mexFun_Radar_Data_DSP.mexw32.pdb” 文件,用于斷點調(diào)試。注意:如果在Win7 64bit下運行,則需要重新編譯一下,生成“mexFun_Radar_Data_DSP.mexw64”,才能在64bit 的matlab下調(diào)用。2.2 IPP的編譯需要先安裝IPP的開發(fā)包,在“Y:SETUPDevTools各種軟件開發(fā)工具包Intel算法庫IPP6.1” 目錄下,安裝到C盤的默認(rèn)目錄下。需要用到intel_TBE (2).lic文件進行安裝。在C程序的開頭,需要加入:#include C:Program FilesIntelIPP6.1.2.041ia32includeipp.h #pragma comment( lib,C:Program FilesIntelIPP6.1.2.041ia32libippcorel.lib) #pragma comment( lib,C:Program FilesIntelIPP6.1.2.041ia32libippsemerged.lib)#pragma comment( lib,C:Program FilesIntelIPP6.1.2.041ia32libippsmerged.lib)注意:經(jīng)測試發(fā)現(xiàn),使用支持多線程并行計算的靜態(tài)庫,沒有加速效果(實際運行時,仍然是單線程)。因此,就決定只采用單線程的庫了。具體使用方法詳見“C:Program FilesIntelIPP6.1.2.041ia32doc”目錄下的userguide_win_ia32.pdf。2.3 在64bit 操作系統(tǒng)下的編譯注意:在64bit操作系統(tǒng)下,需要安裝IPP 6.0的64bit版本(沒有6.1的64bit 版本)。然后,在C程序的開頭,需要加入:#include C:Program FilesIntelIPP6.0.0.062em64tincludeipp.h #pragma comment( lib,C:Program FilesIntelIPP6.0.0.062em64tlibippcoreem64tl.lib)#pragma comment( lib,C:Program FilesIntelIPP6.0.0.062em64tlibippsmergedem64t.lib)#pragma comment( lib,C:Program FilesIntelIPP6.0.0.062em64tlibippsemergedem64t.lib)具體使用方法詳見“doc”目錄下的userguide_win_ em64t.pdf。3 速度測試3.1 計算機配置在CJJ的電腦上測量,配置如下:l CPU:I5l 主頻:3.2GHzl 內(nèi)存:4GBl 操作系統(tǒng):Win7 32bitl mex 用 -g 的編譯選項。如果去掉-g,則還可以快約20%l 基數(shù)據(jù)和IQ數(shù)據(jù)都保存在一個直接和計算機SATA接口相連的容量為2TB 機械硬盤上,硬盤沒有采用Windows提供的壓縮功能。3.2 處理一個完整的體掃的IQ數(shù)據(jù)的速度基數(shù)據(jù)在“H:QXLDNJU_CPolBaseData_Select用于C程序測試的數(shù)據(jù)_20140813”目錄下,基數(shù)據(jù)為:NJU.20140704.203525.AR2。對應(yīng)的IQ數(shù)據(jù)在“H:QXLDNJU_CPolIQData用于C程序測試的數(shù)據(jù)_20140813”目錄下,共15個IQ文件。3.2.1 Matlab讀取IQ數(shù)據(jù)的速度不執(zhí)行任何信號處理程序(實際上只執(zhí)行了一個空的mex_Fun_Radar_Data_DSP函數(shù),以便對基數(shù)據(jù)進行賦值),只把IQ數(shù)據(jù)讀取出來,則處理全部的體掃IQ數(shù)據(jù),耗時:151.44 s。這些IQ數(shù)據(jù)文件的總的大小為:4440 MB。因此,每秒的讀取速度為:29.4MB/s??梢?,由于采用了Matlab程序來讀取和解析IQ數(shù)據(jù),速度比較慢,是一個瓶頸。今后要想辦法用C語言來讀取和解析,并且采用高速磁盤陣列進行數(shù)據(jù)的存儲,速度應(yīng)該能更快一點。3.2.2 Matlab的Fun_Radar_Data_DSP 函數(shù)的處理時間用Matlab的Fun_Radar_Data_DSP 函數(shù),計算全部的體掃IQ數(shù)據(jù),耗時:560.25s。注意:這個時間,包括了IQ數(shù)據(jù)讀取的時間(需要耗費151.44s)。因此,如果扣除了IQ數(shù)據(jù)讀取的時間,則Matlab的Fun_Radar_Data_DSP 函數(shù)耗時408.81s。3.2.3 用C語言編寫的mexFun_Radar_Data_DSP 函數(shù)的處理時間(采用-g 編譯)而用C語言編寫的mex Fun_Radar_Data_DSP 函數(shù),計算全部的體掃IQ數(shù)據(jù),耗時277.75s。注意:這個時間,包括了IQ數(shù)據(jù)讀取的時間(需要耗費151.44s)。因此,如果扣除了IQ數(shù)據(jù)讀取的時間,則C語言的 函數(shù)耗時126.31s3.2.4 用C語言編寫的mexFun_Radar_Data_DSP 函數(shù)的處理時間(不采用-g 編譯)而用C語言編寫的mex Fun_Radar_Data_DSP 函數(shù),計算全部的體掃IQ數(shù)據(jù),耗時256.33s。注意:這個時間,包括了IQ數(shù)據(jù)讀取的時間(需要耗費151.44s)。因此,如果扣除了IQ數(shù)據(jù)讀取的時間,則C語言的 函數(shù)耗時104.89s。3.2.5 結(jié)果對比全部耗時扣除了IQ數(shù)據(jù)讀取的耗時Matlab的Fun_Radar_Data_DSP 函數(shù)的處理時間560.25s408.81s用C語言編寫的mex_Fun_Radar_Data_DSP 函數(shù)的處理時間(采用-g 編譯)277.75126.31用C語言編寫的mex_Fun_Radar_Data_DSP 函數(shù)的處理時間(不采用-g 編譯)256.33s104.89由于天線一個體掃模式(共15個仰角層面),共耗費404s。因此,從表中可以看出, 采用C語言對Matlab程序進行優(yōu)化之后,就能實時實現(xiàn)各種處理算法了。3.3 mexFun_Radar_Data_DSP 函數(shù)中,各個子函數(shù)的速度測試數(shù)據(jù)為64個相關(guān)脈沖(即方位上的積累數(shù)),距離庫為1933個,庫長為75m。測試方法是通過1000次循環(huán),然后平均得到的。函數(shù)功能(采用-g 編譯)(ms)(不采用-g 編譯)(ms)累計耗時單獨耗時累計耗時單獨耗時只有數(shù)據(jù)的輸入和輸出,即只執(zhí)行了 Get_DSP_Setup、Get_CorrelationData、Set_RayRecord 3個函數(shù),用于和Matlab空間的數(shù)據(jù)交互1.791.791.001.00增加了Fun_PreProcess.c 函數(shù)6.274.485.054.05增加了Fun_ClutterFilter.c函數(shù)16.8810.6113.328.27增加了Fun_CorrCalc21.114.2317.464.14增加了Fun_ParameterCalc22.291.1818.100.64增加了Fun_ChannelCorrect22.19-0.118.160.06增加了Fun_ZDR_KDP_Calc23.351.1618.890.73增加了Fun_FormatChange23.670.3219.200.31增加了Fun_Thresholding23.57-0.119.02-0.18增加了Fun_SpeckleFilter23.750.1819.360.34注意:上表中,有些函數(shù)的耗時為負數(shù),表示這段程序耗時非常小,由于測量誤差造成的。注意:經(jīng)測試,對于同樣的IQ數(shù)據(jù),Matlab的Fun_Radar_Data_DSP 函數(shù)的執(zhí)行時間為:99.86ms 。可見,C語言編寫的函數(shù),其執(zhí)行時間僅為Matlab耗時的1/41/5。 3.4 在X1筆記本電腦上的計算速度該筆記本電腦的配置為:l CPU:I7l 主頻:2.0GHzl 內(nèi)存:8GBl 操作系統(tǒng):Win7 64bit基數(shù)據(jù)和IQ數(shù)據(jù)都保存在筆記本電腦的SSD硬盤上,SSD沒有采用Windows提供的壓縮功能。經(jīng)測試,讀取全部的體掃IQ數(shù)據(jù),耗時:s。速度測試結(jié)果如下:全部耗時扣除了IQ數(shù)據(jù)讀取的耗時Matlab的Fun_Radar_Data_DSP 函數(shù)的處理時間694.65s用C語言編寫的mex_Fun_Radar_Data_DSP 函數(shù)的處理時間(不采用-g 編譯)299.59s可見,在筆記本電腦上,由于CPU的主頻比較慢,因此計算速度比臺式機要慢很多。3.5 多個Matlab進程同時運行經(jīng)測試,多個Matlab同時運行,全局變量不會在不同進程間共享,從而不會對計算結(jié)果造成影響。也就是說,可以同時開幾個matlab進程進行計算,分別計算不同目錄下的IQ數(shù)據(jù)。下面是同時運行2個matlab進行計算的任務(wù)管理器的截屏。從中可以看出,每個Matlab各自在一個CPU核上運行。需要注意:如果硬盤的讀寫速度比較慢,就會造成IQ數(shù)據(jù)讀取需要耗費大量的時間,就體現(xiàn)不出多個Matlab同時運行的好處了。4 經(jīng)驗和教訓(xùn)在編程中,有以下一些經(jīng)驗和教訓(xùn)要吸?。簂 C語言中,所有的變量要在函數(shù)的一開頭進行定義,而不能像C+ 語言一樣(只要在用之前定義即可)。l 占用內(nèi)存比較大的變量(如保存IQ數(shù)據(jù)的變量),必須要定義成全局變量。否則,編譯會報錯(堆棧的空間不夠)。l 注意:要用fabs,而不能用abs! 因為C語言中的abs是整數(shù)取絕對值!l 經(jīng)過Matlab和IPP中的窗函數(shù)對比發(fā)現(xiàn),兩者有點差別。因此,這里要將matlab的窗函數(shù)人工寫出來,而不能直接采用matlab提供的,如hamming、hanning的函數(shù),以便和IPP中的完全一致l 在反異步的程序中,原來的C語言代碼有缺陷。當(dāng)判斷出當(dāng)前距離單元是異步干擾信號時,不能將Abs的結(jié)果清零,而只能先將IQ清零。等到反異步結(jié)束之后,再從IQ重新計算出 Abs的結(jié)果。5 下一步工作5.1 對所有的IQ數(shù)據(jù),重新計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 認(rèn)識白描表現(xiàn)手法(含練習(xí))
- 區(qū)塊鏈技術(shù)助力商標(biāo)權(quán)益的維護
- 一年級地理知識探究活動計劃
- 高三歷史復(fù)習(xí)計劃的考試策略指導(dǎo)
- 編程思維培養(yǎng)-全面剖析
- 醫(yī)療AI在精準(zhǔn)醫(yī)療中的責(zé)任與邊界
- 基于新能源微電網(wǎng)的2025年智能電網(wǎng)穩(wěn)定性研究與解決方案報告
- 夜間餐飲市場區(qū)域分布及競爭格局研究報告
- 服役失效分析-全面剖析
- 生物降解材料推動設(shè)備創(chuàng)新應(yīng)用-全面剖析
- 2024年吉林省吉林市中考化學(xué)真題含解析
- 【MOOC】影像技術(shù)學(xué)-東南大學(xué) 中國大學(xué)慕課MOOC答案
- 湖北省武漢市2025屆高三第一次模擬考試數(shù)學(xué)試卷含解析
- 低空空域管理方案
- 2025屆新高考語文古詩文理解性默寫匯編(新高考60篇含答案)
- 展廳設(shè)計案例分析
- 醫(yī)學(xué)影像科提高診斷報告與手術(shù)后符合率持續(xù)性改進PDCA
- 2024年江蘇省蘇州市中考生物試卷含答案
- 多功能會議室建設(shè)方案
- 2024年數(shù)字電視廣播發(fā)射機項目建議書
- 卜算子-送鮑浩然之浙東課件
評論
0/150
提交評論