本發(fā)明涉及頻譜感知技術(shù)領(lǐng)域,具體涉及一種基于usrp的頻譜智能感知系統(tǒng)及其方法。
背景技術(shù):
目前無線頻譜資源的規(guī)劃和使用是由政府制定,通信設(shè)備對(duì)頻譜的使用須政府授權(quán)許可,而且政府所制定的頻譜靜態(tài)分配方式會(huì)嚴(yán)重降低頻譜的利用效率。比如分配給蜂窩移動(dòng)通信的系統(tǒng)頻帶經(jīng)常會(huì)出現(xiàn)超負(fù)荷現(xiàn)象,而共用頻帶卻85%的時(shí)間處于空閑狀態(tài)。而認(rèn)知無線電技術(shù)可使認(rèn)知用戶“見縫插針”地借用空閑的授權(quán)頻帶,從而提高頻譜的利用機(jī)會(huì)和利用效率。
認(rèn)知無線電的硬件原型通常選擇usrp軟件無線電平臺(tái)裝置,其前面板多為兩天線接口,可以分別用來接收或發(fā)射信號(hào),中間配有ethernet接口以通過千兆以太網(wǎng)連接pc,右下方的power接口作為電源接口。
如上所說,目前一臺(tái)usrp配有兩根天線,只能完成一次收發(fā)信號(hào)。如果把發(fā)射信號(hào)的天線用來發(fā)射su信號(hào),那么就無法用發(fā)射天線來控制pu信號(hào)的存在與否了。因此,一臺(tái)usrp無法通過檢測程序?qū)崿F(xiàn)認(rèn)知用戶su在pu信號(hào)不存在的情況下可以占用授權(quán)用戶pu的授權(quán)頻段,在pu信號(hào)存在的情況下,可以主動(dòng)避讓的功能。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問題,本發(fā)明提供了一種基于usrp的頻譜智能感知系統(tǒng)及其方法,避免了現(xiàn)有技術(shù)中一臺(tái)usrp無法通過檢測程序?qū)崿F(xiàn)認(rèn)知用戶su在pu信號(hào)不存在的情況下可以占用授權(quán)用戶pu的授權(quán)頻段和在pu信號(hào)存在的情況下可以主動(dòng)避讓的缺陷。
為了克服現(xiàn)有技術(shù)中的不足,本發(fā)明提供了一種基于usrp的頻譜智能感知系統(tǒng)及其方法的解決方案,具體如下:
一種基于usrp的頻譜智能感知系統(tǒng),包括usrp,所述usrp通過以太網(wǎng)與主機(jī)計(jì)算機(jī)pc相連接;
所述主機(jī)計(jì)算機(jī)pc中包括labview軟件平臺(tái)和niusrp軟件套件,所述niusrp軟件套件在labview中增加了ni-usrp驅(qū)動(dòng)程序,所述labview軟件平臺(tái)中的程序通過ni-usrp驅(qū)動(dòng)程序與所述usrp進(jìn)行交互;
所述labview軟件平臺(tái)中的程序包括頻譜感知程序,所述頻譜感知程序包括usrp頻譜感知模塊。
進(jìn)一步地,所述usrp為niusrp,所述niusrp通過千兆以太網(wǎng)與主機(jī)計(jì)算機(jī)pc相連接。
進(jìn)一步地,所述主機(jī)計(jì)算機(jī)pc中還能夠引用matlabscript以此來實(shí)現(xiàn)labview與matlab的聯(lián)調(diào)。
進(jìn)一步地,所述ni-usrp驅(qū)動(dòng)程序包括八個(gè)函數(shù),所述八個(gè)函數(shù)分別為
9.niusrp打開rx會(huì)話vi,即niusrpopenrxsessionvi;
10.niusrp配置信號(hào)vi,即niusrpconfigurevi;
11.niusrp初始化vi,即niusrpinitiatevi;
12.niusrp打開tx會(huì)話vi,即niusrpopentxsessionvi;
13.niusrp提取接收數(shù)據(jù)vi,即niusrpfetchrxdatavi;
14.niusrp發(fā)射數(shù)據(jù)vi,即niusrpwritetxdatavi);
15.終止vi,即niusrpabortvi;
16.關(guān)閉vi,即niusrpclosesessionvi;其中1-4中的vi實(shí)現(xiàn)配置功能,5-6中的vi實(shí)現(xiàn)讀寫功能,7-8中的vi實(shí)現(xiàn)結(jié)束功能。
進(jìn)一步地,所述接收無線信號(hào)和發(fā)射無線信號(hào)模塊通過所述ni-usrp驅(qū)動(dòng)程序的所述八個(gè)函數(shù)來實(shí)現(xiàn)接收無線信號(hào)和發(fā)射無線信號(hào)的過程。
進(jìn)一步地,所述基于usrp的頻譜感知系統(tǒng)的方法,包括:在限定只用一臺(tái)usrp的情況下,可以用一根天線作為接收天線接收無線信號(hào),通過頻譜感知程序中的usrp頻譜感知模塊對(duì)接收的無線信號(hào)進(jìn)行頻譜感知,找到可用頻段后,通過另一根天線在此可用頻段上發(fā)射fm信號(hào),這時(shí)終止針對(duì)接收天線的能量檢測模塊的能量檢測,利用接收天線解調(diào)發(fā)射天線所發(fā)射的fm信號(hào),而所述usrp頻譜感知模塊包括音頻信號(hào)存儲(chǔ)模塊、計(jì)算判決門限模塊、能量檢測模塊、發(fā)射fm信號(hào)模塊以及解調(diào)fm信號(hào)模塊。
進(jìn)一步地,所述音頻信號(hào)存儲(chǔ)模塊包括配置音頻輸入的函數(shù)、讀取音頻輸入的函數(shù)、寫入并打開音頻文件的函數(shù)、寫入音頻文件的函數(shù)、音頻輸入清零的函數(shù)、關(guān)閉音頻文件的函數(shù)和音頻信號(hào)存儲(chǔ)前面板,所述配置音頻輸入的函數(shù)用于設(shè)置音頻信號(hào)的特征,所述音頻信號(hào)的特征包括每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式,所述讀取音頻輸入的函數(shù)用于從所述主機(jī)計(jì)算機(jī)pc的聲卡中讀取正在錄制的音頻信號(hào),所述寫入并打開音頻文件的函數(shù)用于指定音頻信號(hào)在磁盤上的存儲(chǔ)位置,所述寫入音頻文件的函數(shù)用于把讀取的音頻信號(hào)寫入到指定的音頻信號(hào)的存儲(chǔ)位置,所述音頻輸入清零的函數(shù)用于停止采集數(shù)據(jù)、清除緩存、任務(wù)返回至默認(rèn)狀態(tài)以及清除與任務(wù)相關(guān)的數(shù)據(jù),所述關(guān)閉音頻文件的函數(shù)用于停止音頻信號(hào)的存儲(chǔ),這樣通過所述音頻信號(hào)存儲(chǔ)前面板選擇音頻文件的存儲(chǔ)路徑、輸入每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式,所述設(shè)備id是音頻操作時(shí)輸入或輸出的設(shè)備的標(biāo)識(shí),它的默認(rèn)值為0,所述每通道采樣總數(shù)為指定的從樣本緩沖區(qū)中讀取樣本的速率,所述采樣模式為指定vi進(jìn)行有限采樣或連續(xù)采樣,所述聲音格式為設(shè)置音頻操作的采集速率、通道數(shù)量和每個(gè)采樣的比特位數(shù);然后點(diǎn)擊所示音頻信號(hào)存儲(chǔ)前面板的停止按鈕,把選擇的音頻文件的存儲(chǔ)路徑傳輸?shù)綄懭氩⒋蜷_音頻文件的函數(shù),而輸入的每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式傳輸?shù)脚渲靡纛l輸入的函數(shù),然后所述讀取音頻輸入的函數(shù)按照傳輸?shù)脚渲靡纛l輸入的函數(shù)中的所述每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式用于從所述主機(jī)計(jì)算機(jī)pc的聲卡中讀取正在錄制的音頻信號(hào),接著所述寫入音頻文件的函數(shù)根據(jù)傳輸?shù)綄懭氩⒋蜷_音頻文件的函數(shù)中的選擇的音頻文件的存儲(chǔ)路徑用于把讀取的音頻信號(hào)寫入到選擇的音頻文件的存儲(chǔ)路徑,寫入完畢后所述音頻輸入清零的函數(shù)就停止采集數(shù)據(jù)、清除緩存、任務(wù)返回至默認(rèn)狀態(tài)以及清除與任務(wù)相關(guān)的數(shù)據(jù),而所述關(guān)閉音頻文件的函數(shù)停止音頻信號(hào)的存儲(chǔ)。
進(jìn)一步地,所述計(jì)算判決門限模塊是根據(jù)公式(1)
來推導(dǎo)出門限值,q(.)是正態(tài)分布尾部概率函數(shù),所述計(jì)算判決門限模塊包括計(jì)算門限設(shè)置信息的子vi、計(jì)算判決門限的子vi、matlab節(jié)點(diǎn)的程序和外圍程序,所述計(jì)算門限設(shè)置信息的子vi對(duì)同一波段的頻譜數(shù)據(jù)進(jìn)行10次取樣,將這10組取樣處理結(jié)果的中位數(shù)作為輸出,所述計(jì)算門限設(shè)置信息的子vi的輸入端有三個(gè)參數(shù),所述三個(gè)參數(shù)分別為待處理的功率密度譜的波形數(shù)據(jù),待檢測數(shù)據(jù)的起始頻率和待檢測數(shù)據(jù)的截止頻率,而所述計(jì)算門限設(shè)置信息的子vi的輸出端是一個(gè)簇集合,包括兩個(gè)參數(shù),該兩個(gè)參數(shù)分別是整個(gè)波形數(shù)據(jù)的數(shù)組長度的一半n/2和虛警概率pf,把該兩個(gè)參數(shù)代入公式(1)就能計(jì)算出對(duì)應(yīng)于虛警概率的門限值λf,而在外圍程序中,設(shè)置了1個(gè)全局變量cishu,還有2個(gè)局部變量pnz和門限設(shè)置信息;cishu用于記錄所述計(jì)算門限設(shè)置信息的子vi運(yùn)行的次數(shù);門限設(shè)置信息為前10次取樣計(jì)算結(jié)果的中位數(shù),如果取樣次數(shù)不到10次,門限設(shè)置信息為每次取樣后的計(jì)算結(jié)果;如果取樣次數(shù)超過10次,門限設(shè)置信息與取樣10次門限設(shè)置信息相同,另外還設(shè)置了局部變量數(shù)組形式的變量pnz,pnz負(fù)責(zé)把每次外圍程序的運(yùn)行結(jié)果存儲(chǔ)下來,等到對(duì)頻譜數(shù)據(jù)取樣10次時(shí),外圍程序計(jì)算pnz數(shù)組中數(shù)據(jù)的中位數(shù),所述外圍程序的具體流程如下:
步驟1-1:獲取全局變量cishu的值。在所述外圍程序剛開始時(shí),把cishu設(shè)置成1;
步驟1-2:判斷cishu是否小于11,如果小于11,執(zhí)行步驟1-3;如果不小于11,執(zhí)行步驟1-5;
步驟1-3:把頻譜數(shù)據(jù)段的數(shù)據(jù)送入matlab節(jié)點(diǎn),利用matlab工具處理數(shù)據(jù),把一次運(yùn)算的結(jié)果依次存到局部變量數(shù)組pnz中,在matlab節(jié)點(diǎn)里,程序會(huì)判斷是否程序已經(jīng)執(zhí)行了10次,如果執(zhí)行了10次,則會(huì)把10次數(shù)據(jù)的中位數(shù)作為門限設(shè)置信息的局部變量,并將該局部變量作為程序輸出值;
步驟1-4:全局變量cishu自加1賦給全局變量cishu;
步驟1-5:獲取步驟1-3中的門限設(shè)置信息,并將其作為程序輸出值;
所述matlab節(jié)點(diǎn)的程序計(jì)算指定頻譜內(nèi)的噪聲功率和整個(gè)波形數(shù)據(jù)的長度的一半,取10次計(jì)算結(jié)果的中位數(shù)作為輸出結(jié)果,所述matlab節(jié)點(diǎn)的輸入端參數(shù)及作用如下:
所述matlab節(jié)點(diǎn)的輸入端參數(shù)包括:
起始頻率f1和截止頻率f2,用于確定頻譜范圍;
全局變量cishu,用于記錄所述計(jì)算門限設(shè)置信息的子vi運(yùn)行的次數(shù);
局部變量pnz,用于存儲(chǔ)前10次的計(jì)算結(jié)果;
功率譜密度,所述功率譜密度是波形數(shù)據(jù)格式,包括三個(gè)參數(shù)f0,df,magnitude,分別表示波形的起始頻率、頻率間隔以及對(duì)應(yīng)頻率點(diǎn)的功率密度;
所述matlab節(jié)點(diǎn)的輸出端的參數(shù)及其含義如下:
pn是程序運(yùn)行10次得到的噪聲功率的中位數(shù);
m是波形數(shù)據(jù)長度的一半;
局部變量pnz用于把計(jì)算結(jié)果寫入數(shù)組,以待matlab節(jié)點(diǎn)的程序再次運(yùn)行時(shí)可以從中讀取數(shù)據(jù);
所述matlab節(jié)點(diǎn)的程序的流程如下所示:
步驟2-1:根據(jù)公式(2)計(jì)算出起始頻率和截止頻率各自在數(shù)組magnitude中對(duì)應(yīng)的下標(biāo)n1和n2,為了確保n1和n2是整數(shù),使用round(n)函數(shù)對(duì)公式(2)運(yùn)算的結(jié)果進(jìn)行四舍五入處理,其中n為n1或者n2,f為f1或者f2:
n=(f-f0)/df(2)
步驟2-2:設(shè)置當(dāng)起始頻率在數(shù)組magnitude中對(duì)應(yīng)的下標(biāo)n1為0時(shí),強(qiáng)制把該n1的值調(diào)整為1;
步驟2-3:計(jì)算n1到n2的數(shù)據(jù)點(diǎn)的個(gè)數(shù)n,作為指定頻率段數(shù)組的長度;計(jì)算出輸入數(shù)組magnitude的長度值的一半賦值給m作為輸出;
步驟2-4:把波形幅度信息s中下標(biāo)從n1到n2的元素值,用公式(3)進(jìn)行計(jì)算,并把結(jié)果賦給新數(shù)組x,其中數(shù)組x的下標(biāo)從1開始,長度為n:
pn=10^(pn(db)/10)(3)
其中pn(db)表示用分貝db值表示的噪聲功率;
步驟2-5:高斯噪聲信號(hào)的能量在頻域內(nèi)的表達(dá)式為公式(4)所示:
利用高斯噪聲信號(hào)的功率譜均值p(f)是一個(gè)固定值,先求特定頻段的均值p(f)df,然后以此均值p(f)df乘以頻譜圖數(shù)據(jù)的點(diǎn)數(shù),求取整個(gè)頻段的噪聲功率p(t);
步驟2-6:把pn賦值給數(shù)組局部變量pnz,數(shù)組的下標(biāo)設(shè)置為程序運(yùn)行的次數(shù),也就是全局變量cishu;
步驟2-7:根據(jù)全局變量cishu判斷所述matlab節(jié)點(diǎn)的程序是否運(yùn)行了10次,如果全局變量cishu等于10,執(zhí)行步驟2-8,否則執(zhí)行步驟2-9;
步驟2-8:求取數(shù)組局部變量pnz的中位數(shù),把結(jié)果賦值給數(shù)組局部變量pnz,并把pnz作為輸出,執(zhí)行步驟2-9;
步驟2-9:全局變量cishu自加1,表示程序已經(jīng)完成了一次計(jì)算pn,cishu是一個(gè)全局變量,在主程序初始運(yùn)行時(shí),默認(rèn)值為1;
再利用公式(1)計(jì)算判決門限t,所述計(jì)算判決門限的子vi根據(jù)輸入?yún)?shù)計(jì)算出能量檢測的門限值,而其輸入?yún)?shù)包括門限設(shè)置信息和虛警概率,所述門限設(shè)置信息從計(jì)算門限設(shè)置信息的子vi中獲取,虛警概率代表把噪聲信號(hào)誤當(dāng)作pu信號(hào)的概率,可以手動(dòng)設(shè)置,默認(rèn)情況下為0.1,所述計(jì)算判決門限的子vi的輸出結(jié)果為檢測門限值t;而所述計(jì)算判決門限的子vi包括matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序,所述matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序的數(shù)據(jù)處理流程如下:
步驟3-1:根據(jù)公式(1)可以計(jì)算出虛警概率pf所對(duì)應(yīng)的門限值tn,也就是λf,matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序中包括qfuncinv()函數(shù),其是matlab中的封裝函數(shù),能夠?qū)崿F(xiàn)q-1()的功能;
步驟3-2:因?yàn)楣β首V密度的數(shù)據(jù)的單位是分貝,所以還需要把tn的單位轉(zhuǎn)換成db,轉(zhuǎn)換公式為公式(5)所示,公式(5)中的t(db)表示單位為db的檢測門限值:
t(db)=10lg(tn)(5)
步驟3-3:把結(jié)果t(db)作為判決門限而輸出;
進(jìn)一步地,所述能量檢測模塊是根據(jù)這段頻譜上的值是否存在大于檢測門限值來進(jìn)行判決的,如果這段頻譜上的值大于檢測門限值,就存在pu信號(hào),如果這段頻譜上的值不大于檢測門限值,就不存在pu信號(hào),所述檢測門限值就是所述判決門限;
另外所述能量檢測模塊包括用于頻譜感知的vi,所述用于頻譜感知的vi從輸入的功率密度譜的數(shù)據(jù)中,根據(jù)門限值的大小,來判斷功率密度譜中哪些頻段存在pu信號(hào),還可以根據(jù)檢測結(jié)果,以及fm頻偏的大小,計(jì)算fm發(fā)射信號(hào)的載波頻率,最后,根據(jù)pu信號(hào)范圍中的起始頻率和終止頻率,該用于頻譜感知的vi能夠計(jì)算出這一頻段pu信號(hào)的功率;
所述用于頻譜感知的vi中包括有用于頻譜感知的matlab節(jié)點(diǎn),在所述用于頻譜感知的matlab節(jié)點(diǎn)的輸入端包括一個(gè)全局變量suf,所述用于頻譜感知的matlab節(jié)點(diǎn)的輸出端包括另一個(gè)全局變量suf和全局變量lastpower,其中suf是magnitude數(shù)組的下標(biāo),magnitude數(shù)組也就是數(shù)組s,利用公式(6),可以根據(jù)suf計(jì)算出發(fā)射頻率fw,如果是對(duì)某一載波信號(hào)進(jìn)行分析,則需要在所得結(jié)果的基礎(chǔ)上加上載波頻率fz,如公式(7)所示:
fw=f0+df*suf(6)
fw=fz+f0+df*suf(7)
在所述用于頻譜感知的matlab節(jié)點(diǎn)的輸入端包括pu信號(hào)范圍的兩個(gè)參數(shù)f1和f2,f1和f2分別代表估算pu信號(hào)功率時(shí),計(jì)算范圍的起始頻率和截止頻率;
所述用于頻譜感知的matlab節(jié)點(diǎn)的程序分為順序執(zhí)行的三個(gè)程序部分,所述三個(gè)程序部分包括:
a.頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo);
b.計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf;
c.計(jì)算出指定頻段pu信號(hào)的功率;
所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分可以從頻譜數(shù)組中找到所有可以作為認(rèn)知用戶su的發(fā)射頻率的下標(biāo),所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分判斷頻譜數(shù)組中的下標(biāo)是否可以為認(rèn)知用戶su的發(fā)射頻率的下標(biāo)的標(biāo)準(zhǔn)是:發(fā)射的su信號(hào)不能對(duì)pu信號(hào)造成干擾,所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分的流程如下:
步驟4-1:計(jì)算出數(shù)組s的長度n,和頻偏w對(duì)應(yīng)的數(shù)據(jù)點(diǎn)數(shù)n,并定義一個(gè)和s長度相同,初值為0的數(shù)組x;
步驟4-2:依次遍歷數(shù)組s中的元素,如果元素值大于閾值t,所述閾值t也就是門限值,那么此元素對(duì)應(yīng)下標(biāo)處x的元素值為1,這樣就找到了s中所有大于閾值的點(diǎn),也就可以認(rèn)為下標(biāo)處x所對(duì)應(yīng)的數(shù)組元素值為1處存在pu信號(hào);
步驟4-3:令y等于x,其中y用于記錄所有可以作為發(fā)射頻率的數(shù)據(jù)點(diǎn)位置,令y等于x,就保證了在x(i)等于1處,即存在pu信號(hào)的地方,不能作為發(fā)射頻率對(duì)應(yīng)的下標(biāo);
步驟4-4:遍歷x中的每一個(gè)元素,判斷在x(i)是否與x(i)之前的三個(gè)數(shù)的值是否不同,通過這種辦法,找到pu信號(hào)的邊界,所述pu信號(hào)的邊界包括pu信號(hào)上升的邊界和pu信號(hào)下降的邊界,如果判斷的結(jié)果不同,執(zhí)行步驟4-5;如果判斷的結(jié)果相同,執(zhí)行步驟4-10,i為整型變量;
步驟4-5:判斷i-n是否小于1,即判斷i-n是否溢出,如果溢出,令k1=1,如果i-n沒有溢出,令k1=i-n,這時(shí)k1的作用是用來作為找到可以作為發(fā)射頻率的頻段的起始邊界,同樣地,還包括一個(gè)終止邊界,定義為k2,所述k1和k2為整型變量;
步驟4-6:判斷i+n是否大于n,同樣也是判斷i+n是否溢出,如果溢出,令k2=n;如果沒有溢出,令k2=i+n;
步驟4-7:通過步驟4-5和步驟4-6,已經(jīng)找到了授權(quán)用戶pu邊界處左邊和右邊n個(gè)點(diǎn)的位置是k1到k2,并保證了k1,k2沒有溢出,在這一步驟中,令y中k1和k2之間的下標(biāo)對(duì)應(yīng)的元素值為1;
步驟4-8:如果在遍歷的時(shí)候,y數(shù)組元素的下標(biāo)i=1時(shí),即在y數(shù)組的開始處,并且i+n沒有溢出,那么令y數(shù)組的下標(biāo)1到1+n處的元素值為1;
步驟4-9:如果在遍歷的時(shí)候,y數(shù)組元素的下標(biāo)i=n時(shí),即在y數(shù)組的終止處,并且i-n沒有溢出,那么令y數(shù)組下標(biāo)n-n到n處的元素值為1;
步驟4-10:結(jié)束;
所述計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分的流程如下:
步驟5-1:對(duì)所述計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分的重要參數(shù)初始化,令i=1和power=0,其中i代表發(fā)射頻率下標(biāo)的初始值,power代表pu信號(hào)的初始能量值;
步驟5-2:以while循環(huán)的方式來逐一判斷y(i)是否為1,如果y(i)為1,i進(jìn)行自加運(yùn)算,否則所述計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分跳出while循環(huán),通過這種辦法找到y(tǒng)(i)中第一個(gè)其值不為1的下標(biāo)i,已經(jīng)知道該y(i)的值為0,表示下標(biāo)i處對(duì)應(yīng)的頻率可以作為發(fā)射頻率,這樣就找到了第一個(gè)可以作為su發(fā)射頻率的對(duì)應(yīng)下標(biāo)的值;
步驟5-3:判斷suf分別加n和減n后是否在1到n范圍內(nèi),如果在1到n內(nèi),說明suf值為上次發(fā)射頻率對(duì)應(yīng)的下標(biāo),就要根據(jù)suf值計(jì)算其左邊和右邊的n個(gè)數(shù)據(jù)點(diǎn)的能量,把結(jié)果賦值給power,然后執(zhí)行步驟5-4,如果n不在1到n內(nèi),則說明suf不是上次發(fā)射頻率對(duì)應(yīng)的下標(biāo),直接執(zhí)行步驟5-4;
步驟5-4:判斷i+10是否小于n,如果是,說明存在合適的發(fā)射頻率的下標(biāo),執(zhí)行步驟5-5;如果不是,說明檢測到的頻率下標(biāo)不能作為發(fā)射頻率的下標(biāo),執(zhí)行步驟5-7;
步驟5-5:判斷是否滿足三個(gè)條件,所述三個(gè)條件為suf等于1、|suf-i|大于10和power比0.7*lastpower小,這三個(gè)條件均滿足執(zhí)行步驟5-6;
步驟5-6:將i賦值給全局變量suf,表示找到了新的發(fā)射頻率的下標(biāo),執(zhí)行步驟5-8;
步驟5-7:將1賦值給全局變量suf,表示沒有找到可以作為發(fā)射頻率下標(biāo)的值,執(zhí)行步驟5-8;
步驟5-8:將計(jì)算的power值賦給全局變量lastpower,為下一次判斷su信號(hào)是否需要避讓pu信號(hào)做準(zhǔn)備;
步驟5-9:結(jié)束;
計(jì)算出指定頻段pu信號(hào)的功率的流程如下:
步驟6-1:把pu信號(hào)的能量初始化為0,并把設(shè)置的檢測頻率范圍的邊界f1和f2利用公式(27)轉(zhuǎn)換成對(duì)應(yīng)的下標(biāo)fn1和fn2;
步驟6-2:判斷fn1和fn2是否小于等于0,如果小于等于0,說明fn1或fn2不合法,就把它們的值改為1,否則,直接執(zhí)行步驟6-3;
步驟6-3:判斷fn1是否小于fn2,如果是,執(zhí)行步驟6-4;否則執(zhí)行步驟6-5,在這里,fn1對(duì)應(yīng)起始頻率,fn2對(duì)應(yīng)截止頻率;
步驟6-4;在數(shù)組s中,從下標(biāo)fn1到fn2找到對(duì)應(yīng)元素中大于門限值t的元素,先把這個(gè)元素通過公式(8)去掉db單位,其中ps(db)是單位為db的pu信號(hào)的功率,然后把轉(zhuǎn)換后的結(jié)果遞加到pu信號(hào)的功率ps中,這樣,可以求出f1到f2中存在的pu信號(hào)的能量ps;
ps=10^(ps(db)/10)(8)
步驟6-5:結(jié)束。
進(jìn)一步地,所述發(fā)射fm信號(hào)模塊中包括用來發(fā)射fm信號(hào)的子vi和發(fā)射fm波的前面板,所述發(fā)射fm信號(hào)模塊根據(jù)得到的所述認(rèn)知用戶su的發(fā)射頻率、適當(dāng)?shù)膇q速率和頻偏這樣的參數(shù),運(yùn)行所述用來發(fā)射fm信號(hào)的子vi可以利用usrp的發(fā)射端發(fā)射fm信號(hào)運(yùn)行,所述用來發(fā)射fm信號(hào)的子vi有三個(gè)輸入,所述三個(gè)輸入分別為載波頻率、iq速率以及fm頻偏,所述認(rèn)知用戶su的發(fā)射頻率就是fm載波頻率,通過所述發(fā)射fm波的前面板輸入所述用來發(fā)射fm信號(hào)的子vi所需的載波頻率、iq速率以及fm頻偏的數(shù)值,通過所述發(fā)射fm波的前面板還能輸入所述niusrp配置信號(hào)vi,也就是niusrpconfigure函數(shù),所需的配置參數(shù),通過所述發(fā)射fm波的前面板輸入的配置參數(shù)用于設(shè)置usrp信號(hào)的發(fā)射,所述用來發(fā)射fm信號(hào)的子vi中包括波形重采樣函數(shù)和fm調(diào)制函數(shù);
在所述發(fā)射fm波的前面板輸入所述用來發(fā)射fm信號(hào)的子vi所需的載波頻率、iq速率、fm頻偏的數(shù)值以及所述niusrp配置信號(hào)vi所需的配置參數(shù)后,所述用來發(fā)射fm信號(hào)的子vi把iq速率傳送到所述波形重采樣函數(shù),所述波形重采樣函數(shù)的輸入端獲取到所述iq速率和所述音頻信號(hào)存儲(chǔ)模塊寫入的音頻信號(hào)的數(shù)據(jù)信息后,根據(jù)這兩個(gè)參數(shù),所述波形重采樣函數(shù)可以控制音頻信號(hào)的每個(gè)數(shù)據(jù)點(diǎn)每隔時(shí)間間隔δt來形成重采樣后的波形數(shù)據(jù)發(fā)送,由此實(shí)現(xiàn)音頻信號(hào)的比特率與usrp信號(hào)發(fā)射的iq速率相匹配的功能;
接著所述fm調(diào)制函數(shù)實(shí)現(xiàn)對(duì)信號(hào)的fm調(diào)制,所述fm調(diào)制函數(shù)有兩個(gè)輸入?yún)?shù),一個(gè)是重采樣后的波形數(shù)據(jù),一個(gè)是fm信號(hào)的頻偏,采樣后的波形數(shù)據(jù)從波形重采樣函數(shù)獲得,fm信號(hào)的頻偏為常數(shù);
最后實(shí)現(xiàn)對(duì)信號(hào)的fm調(diào)制后,調(diào)制后的信號(hào)就通過所述ni-usrp驅(qū)動(dòng)程序在所述fm載波頻率下發(fā)射出去。
進(jìn)一步地,對(duì)usrp接收到的信號(hào)進(jìn)行處理,是以while循環(huán)的方式實(shí)現(xiàn)usrp能連續(xù)的接收信號(hào)的條件下通過所述解調(diào)fm信號(hào)模塊對(duì)接收到的數(shù)據(jù)進(jìn)行fm處理,該fm處理只需要對(duì)niusrpfetchrxdate驅(qū)動(dòng)程序的輸出結(jié)果進(jìn)行處理,所述解調(diào)fm信號(hào)模塊中包括用來播放音頻信號(hào)的simplesound子vi、fm解調(diào)音頻信號(hào)的前面板和處理信號(hào)的函數(shù),所述simplesound子vi根據(jù)變量action值選擇條件語句中的分支,若變量action值為“open”,就用soundoutputconfigure函數(shù)來配置聲卡為播放音頻做準(zhǔn)備;若變量action值為“write”,先用一個(gè)normalizewaveform函數(shù)對(duì)波形數(shù)據(jù)進(jìn)行歸一化,再把處理后的數(shù)據(jù)用soundoutputwrite函數(shù)送入計(jì)算機(jī)的聲卡進(jìn)行播放;若變量action值為“close”,就用soundoutputclear函數(shù)清除送給聲卡的緩存數(shù)據(jù),結(jié)束音頻的播放,所述fm解調(diào)音頻信號(hào)的前面板的左側(cè)部分為用來錄入niusrp函數(shù)的配置參數(shù)的部分,其中numberofsamples配置參數(shù)代表每次從數(shù)據(jù)接收信道中接收到的樣本數(shù),numberofsamples和iq速率iqrate有以下關(guān)系:
fetchtime為時(shí)域中完成一次數(shù)據(jù)采集的時(shí)間,resolutionbandwidth為頻域中的頻率分辨率,即每個(gè)相鄰數(shù)據(jù)間的頻率間隔;所述fm解調(diào)音頻信號(hào)的前面板的右側(cè)部分為用于顯示解調(diào)后的波形信號(hào)圖和功率頻譜圖的波形顯示部分,具體處理方式如下;
所述處理信號(hào)的函數(shù)對(duì)usrp接收到的連續(xù)信號(hào)在whileloop中進(jìn)行處理,如果在數(shù)據(jù)信號(hào)接收正常的條件下按照fm解調(diào)音頻信號(hào)的前面板中錄入的niusrp函數(shù)的配置參數(shù)來持續(xù)接收數(shù)據(jù),把接收的數(shù)據(jù)轉(zhuǎn)換為極坐標(biāo)的形式,把極坐標(biāo)中的相位信號(hào)展開,展開后對(duì)數(shù)據(jù)進(jìn)行微分,微分后分別把usrp采樣率與聲卡信息的采樣率匹配、把數(shù)據(jù)實(shí)數(shù)部分和虛數(shù)部分分開和求信號(hào)的功率密度值,然后把數(shù)據(jù)實(shí)數(shù)部分和虛數(shù)部分分開和求信號(hào)的功率密度值后的數(shù)據(jù)分別進(jìn)行顯示然后結(jié)束該處理信號(hào)的函數(shù)的運(yùn)行,而把usrp采樣率與聲卡信息的采樣率匹配后的數(shù)據(jù)送到聲卡在把用來播放音頻信號(hào)的simplesound子vi中的action值變?yōu)椤皐rite”的條件下播放,播放完成后結(jié)束該處理信號(hào)的函數(shù)的運(yùn)行,所述把極坐標(biāo)中的相位展開是通過unwrap函數(shù)實(shí)現(xiàn)的。
本發(fā)明的技術(shù)效果為:在限定只用一臺(tái)usrp的情況下,可以用一根天線作為接收天線接收無線信號(hào),通過頻譜感知程序中的usrp頻譜感知模塊對(duì)接收的無線信號(hào)進(jìn)行頻譜感知,找到可用頻段后,通過另一根天線在此可用頻段上發(fā)射fm信號(hào)。
附圖說明
圖1為本發(fā)明的usrp頻譜感知模塊的組成示意圖。
圖2為本發(fā)明的音頻信號(hào)存儲(chǔ)前面板的示意圖。
圖3為本發(fā)明的外圍程序的流程圖。
圖4為本發(fā)明的matlab節(jié)點(diǎn)的程序流程圖。
圖5為本發(fā)明的所述用于頻譜感知的matlab節(jié)點(diǎn)的程序的一個(gè)部分的流程圖。
圖6為本發(fā)明的所述用于頻譜感知的matlab節(jié)點(diǎn)的程序的另一個(gè)部分的流程圖。
圖7為本發(fā)明的所述用于頻譜感知的matlab節(jié)點(diǎn)的程序的剩余一個(gè)部分的流程圖。
圖8為本發(fā)明的所述發(fā)射fm波的前面板的示意圖。
圖9為本發(fā)明的所述fm解調(diào)音頻信號(hào)的while循環(huán)部分的流程圖。
圖10為本發(fā)明的fm解調(diào)音頻信號(hào)的前面板的示意圖。
圖11為本發(fā)明的實(shí)施例進(jìn)行檢測的基于usrp的頻譜感知程序運(yùn)行前面板示意圖。
圖12是對(duì)圖11中能量密度譜的檢測結(jié)果圖。
圖13是具體實(shí)施方式中的解調(diào)結(jié)果圖。
具體實(shí)施方式
下面將結(jié)合實(shí)施例對(duì)本發(fā)明做進(jìn)一步地說明。
如圖1-圖10所示,本實(shí)施例的基于usrp的頻譜感知系統(tǒng),包括usrp,所述usrp通過以太網(wǎng)與主機(jī)計(jì)算機(jī)pc相連接;這樣在接收信號(hào)時(shí),usrp負(fù)責(zé)把空間的無線信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)傳輸給主機(jī)計(jì)算機(jī)pc,然后主機(jī)計(jì)算機(jī)pc負(fù)責(zé)處理這些數(shù)字信號(hào),處理這些數(shù)字信號(hào)的方式可以為解調(diào)或者解碼;在發(fā)送信號(hào)時(shí),主機(jī)計(jì)算機(jī)pc先對(duì)數(shù)字信號(hào)進(jìn)行處理,處理這些數(shù)字信號(hào)的方式可以為編碼或調(diào)制,然后把處理好的數(shù)字信號(hào)傳輸給usrp,usrp再把這些數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),通過天線發(fā)送到空間中。
所述主機(jī)計(jì)算機(jī)pc中包括labview軟件平臺(tái)和niusrp軟件套件,所述niusrp軟件套件在labview中增加了ni-usrp驅(qū)動(dòng)程序,所述labview軟件平臺(tái)中的程序通過ni-usrp驅(qū)動(dòng)程序與所述usrp進(jìn)行交互;
所述labview軟件平臺(tái)中的程序包括頻譜感知程序,所述頻譜感知程序包括usrp頻譜感知模塊。
所述usrp為niusrp,所述niusrp通過千兆以太網(wǎng)與主機(jī)計(jì)算機(jī)pc相連接。
所述主機(jī)計(jì)算機(jī)pc中還能夠引用matlabscript以此來實(shí)現(xiàn)labview與matlab的聯(lián)調(diào)。在labview程序設(shè)計(jì)中如果數(shù)據(jù)比較復(fù)雜,可以把它交給matlab來處理。
所述ni-usrp驅(qū)動(dòng)程序包括八個(gè)函數(shù),所述八個(gè)函數(shù)分別為
17.niusrp打開rx會(huì)話vi,即niusrpopenrxsessionvi;
18.niusrp配置信號(hào)vi,即niusrpconfigurevi;
19.niusrp初始化vi,即niusrpinitiatevi;
20.niusrp打開tx會(huì)話vi,即niusrpopentxsessionvi;
21.niusrp提取接收數(shù)據(jù)vi,即niusrpfetchrxdatavi;
22.niusrp發(fā)射數(shù)據(jù)vi,即niusrpwritetxdatavi);
23.終止vi,即niusrpabortvi;
24.關(guān)閉vi,即niusrpclosesessionvi;其中1-4中的vi實(shí)現(xiàn)配置功能,5-6中的vi實(shí)現(xiàn)讀寫功能,7-8中的vi實(shí)現(xiàn)結(jié)束功能。
所述niusrpopenrxsessionvi用來啟動(dòng)接收射頻信號(hào)。
所述niusrpconfigurevi用來與接收會(huì)話rx或發(fā)送會(huì)話tx一起使用。通過這個(gè)vi,可以手動(dòng)設(shè)置發(fā)送或接收數(shù)據(jù)的iq率,載頻,增益這樣的信息。但是,并不是所有手動(dòng)設(shè)置的iq率、頻率以及增益都是有效的。如果輸入的參數(shù)值并非有效,函數(shù)會(huì)把輸入值強(qiáng)制轉(zhuǎn)化成一個(gè)有效值。
所述niusrpinitiatevi用來在niusrp配置vi之后使用,它可以告訴usrp參數(shù)配置已經(jīng)完成,可以接收數(shù)據(jù)了。
所述niusrpopentxsessionvi用來啟動(dòng)usrp發(fā)射射頻信號(hào)。
所述niusrpfetchrxdatavi用于提取usrp接收的數(shù)據(jù)。其可以把提取的數(shù)據(jù)進(jìn)行解調(diào)或解碼這樣的數(shù)字化處理。
所述niusrpwritetxdatavi用來控制usrp發(fā)送iq數(shù)據(jù)。
所述niusrpabortvi給usrp傳遞停止命令。usrp接收停止命令后,不再接收或者發(fā)送數(shù)據(jù)。
所述niusrpclosesessionvi用來關(guān)閉正在運(yùn)行的rx或者tx部分,并釋放它們所用的內(nèi)存。niusrpclosesessionvi和niusrpabortvi不同之處在于:如果調(diào)用了前者,如要重新使用usrp,需要重新運(yùn)行程序;如果調(diào)用了后者,可以在不重新運(yùn)行程序的情況下,重新使用usrp。
所述接收無線信號(hào)和發(fā)射無線信號(hào)模塊通過所述ni-usrp驅(qū)動(dòng)程序的所述八個(gè)函數(shù)來實(shí)現(xiàn)接收無線信號(hào)和發(fā)射無線信號(hào)的過程。
所述基于usrp的頻譜感知系統(tǒng)的方法,包括:在限定只用一臺(tái)usrp的情況下,可以用一根天線作為接收天線接收無線信號(hào),通過頻譜感知程序中的usrp頻譜感知模塊對(duì)接收的無線信號(hào)進(jìn)行頻譜感知,找到可用頻段后,通過另一根天線在此可用頻段上發(fā)射fm信號(hào),這時(shí)終止針對(duì)接收天線的能量檢測模塊的能量檢測,利用接收天線解調(diào)發(fā)射天線所發(fā)射的fm信號(hào),而所述usrp頻譜感知模塊包括音頻信號(hào)存儲(chǔ)模塊、計(jì)算判決門限模塊、能量檢測模塊、發(fā)射fm信號(hào)模塊以及解調(diào)fm信號(hào)模塊。所述usrp頻譜感知模塊的組成如圖1所示。
所述usrp頻譜感知模塊的基礎(chǔ)是用來對(duì)fm調(diào)制音頻信號(hào)進(jìn)行發(fā)射與接收,所以音頻信號(hào)存儲(chǔ)模塊首先要解決的問題就是音頻信號(hào)的來源問題。labview中有關(guān)于處理音頻信號(hào)的函數(shù),下面介紹音頻信號(hào)的存儲(chǔ)。需要注意,labview進(jìn)行音頻信號(hào)處理時(shí),只能識(shí)別.wav格式的文件。
所述音頻信號(hào)存儲(chǔ)模塊包括配置音頻輸入的函數(shù)、讀取音頻輸入的函數(shù)、寫入并打開音頻文件的函數(shù)、寫入音頻文件的函數(shù)、音頻輸入清零的函數(shù)、關(guān)閉音頻文件的函數(shù)和如圖4所示的音頻信號(hào)存儲(chǔ)前面板,所述配置音頻輸入的函數(shù)用于設(shè)置音頻信號(hào)的特征,一般在usrp頻譜感知模塊開頭用到,所述音頻信號(hào)的特征包括每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式,所述讀取音頻輸入的函數(shù)用于從所述主機(jī)計(jì)算機(jī)pc的聲卡中讀取正在錄制的音頻信號(hào),所述寫入并打開音頻文件的函數(shù)用于指定音頻信號(hào)在磁盤上的存儲(chǔ)位置,所述寫入音頻文件的函數(shù)用于把讀取的音頻信號(hào)寫入到指定的音頻信號(hào)的存儲(chǔ)位置,所述音頻輸入清零的函數(shù)用于停止采集數(shù)據(jù)、清除緩存、任務(wù)返回至默認(rèn)狀態(tài)以及清除與任務(wù)相關(guān)的數(shù)據(jù),所述關(guān)閉音頻文件的函數(shù)用于停止音頻信號(hào)的存儲(chǔ),表明音頻信號(hào)存儲(chǔ)完成;這樣通過所述音頻信號(hào)存儲(chǔ)前面板選擇音頻文件的存儲(chǔ)路徑(在圖2中的示例中,選擇的音頻文件的存儲(chǔ)路徑為e:\test.wav)、輸入每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式,所述設(shè)備id是音頻操作時(shí)輸入或輸出的設(shè)備的標(biāo)識(shí),它的默認(rèn)值為0,一般不需要更改,所述每通道采樣總數(shù)為指定的從樣本緩沖區(qū)中讀取樣本的速率,所述采樣模式為指定vi進(jìn)行有限采樣或連續(xù)采樣,所述聲音格式為設(shè)置音頻操作的采集速率、通道數(shù)量和每個(gè)采樣的比特位數(shù);然后點(diǎn)擊所示音頻信號(hào)存儲(chǔ)前面板的停止按鈕,這樣就結(jié)束了錄入并把選擇的音頻文件的存儲(chǔ)路徑傳輸?shù)綄懭氩⒋蜷_音頻文件的函數(shù),而輸入的每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式傳輸?shù)脚渲靡纛l輸入的函數(shù),然后所述讀取音頻輸入的函數(shù)按照傳輸?shù)脚渲靡纛l輸入的函數(shù)中的所述每通道采樣總數(shù)、采樣模式、設(shè)備id以及聲音格式用于從所述主機(jī)計(jì)算機(jī)pc的聲卡中讀取正在錄制的音頻信號(hào),接著所述寫入音頻文件的函數(shù)根據(jù)傳輸?shù)綄懭氩⒋蜷_音頻文件的函數(shù)中的選擇的音頻文件的存儲(chǔ)路徑用于把讀取的音頻信號(hào)寫入到選擇的音頻文件的存儲(chǔ)路徑(也就是指定的音頻信號(hào)的存儲(chǔ)位置),寫入完畢后所述音頻輸入清零的函數(shù)就停止采集數(shù)據(jù)、清除緩存、任務(wù)返回至默認(rèn)狀態(tài)以及清除與任務(wù)相關(guān)的數(shù)據(jù),而所述關(guān)閉音頻文件的函數(shù)停止音頻信號(hào)的存儲(chǔ)。
所述計(jì)算判決門限模塊是在運(yùn)行能量檢測模塊進(jìn)行能量檢測之前,根據(jù)公式(1)
來推導(dǎo)出門限值需要有一段信號(hào)的長度、信噪比以及噪聲功率。這些信息可以從參考頻譜上獲取,下面分析如何從一段參考頻譜上得到這些計(jì)算判決門限的必要信息,q(.)是正態(tài)分布尾部概率函數(shù),所述計(jì)算判決門限模塊包括計(jì)算門限設(shè)置信息的子vi、計(jì)算判決門限的子vi、matlab節(jié)點(diǎn)的程序和外圍程序,為了保證計(jì)算結(jié)果的可靠性,所述計(jì)算門限設(shè)置信息的子vi對(duì)同一波段的頻譜數(shù)據(jù)進(jìn)行10次取樣,將這10組取樣處理結(jié)果的中位數(shù)作為輸出,所述計(jì)算門限設(shè)置信息的子vi的輸入端有三個(gè)參數(shù),所述三個(gè)參數(shù)分別為待處理的功率密度譜的波形數(shù)據(jù),待檢測數(shù)據(jù)的起始頻率和待檢測數(shù)據(jù)的截止頻率,而所述計(jì)算門限設(shè)置信息的子vi的輸出端是一個(gè)簇集合,包括兩個(gè)參數(shù),該兩個(gè)參數(shù)分別是整個(gè)波形數(shù)據(jù)的數(shù)組長度的一半n/2和虛警概率pf,把該兩個(gè)參數(shù)代入公式(1)就能計(jì)算出對(duì)應(yīng)于虛警概率的門限值λf,而在外圍程序中,設(shè)置了1個(gè)全局變量cishu,還有2個(gè)局部變量pnz和門限設(shè)置信息;cishu用于記錄所述計(jì)算門限設(shè)置信息的子vi運(yùn)行的次數(shù);門限設(shè)置信息為前10次取樣計(jì)算結(jié)果的中位數(shù),如果取樣次數(shù)不到10次,門限設(shè)置信息為每次取樣后的計(jì)算結(jié)果;如果取樣次數(shù)超過10次,門限設(shè)置信息與取樣10次門限設(shè)置信息相同,另外還設(shè)置了局部變量數(shù)組形式的變量pnz,pnz負(fù)責(zé)把每次外圍程序的運(yùn)行結(jié)果存儲(chǔ)下來,等到對(duì)頻譜數(shù)據(jù)取樣10次時(shí),外圍程序計(jì)算pnz數(shù)組中數(shù)據(jù)的中位數(shù),如圖3所示,所述外圍程序的具體流程如下:
步驟1-1:獲取全局變量cishu的值。在所述外圍程序剛開始時(shí),把cishu設(shè)置成1;
步驟1-2:判斷cishu是否小于11,如果小于11,執(zhí)行步驟1-3;如果不小于11,執(zhí)行步驟1-5;
步驟1-3:把頻譜數(shù)據(jù)段的數(shù)據(jù)送入matlab節(jié)點(diǎn),利用matlab工具處理數(shù)據(jù),把一次運(yùn)算的結(jié)果依次存到局部變量數(shù)組pnz中,在matlab節(jié)點(diǎn)里,程序會(huì)判斷是否程序已經(jīng)執(zhí)行了10次,如果執(zhí)行了10次,則會(huì)把10次數(shù)據(jù)的中位數(shù)作為門限設(shè)置信息的局部變量,并將該局部變量作為程序輸出值;
步驟1-4:全局變量cishu自加1賦給全局變量cishu;
步驟1-5:獲取步驟1-3中的門限設(shè)置信息,并將其作為程序輸出值;
所述matlab節(jié)點(diǎn)的程序計(jì)算指定頻譜內(nèi)的噪聲功率和整個(gè)波形數(shù)據(jù)的長度的一半,取10次計(jì)算結(jié)果的中位數(shù)作為輸出結(jié)果,所述matlab節(jié)點(diǎn)的輸入端參數(shù)及作用如下:
所述matlab節(jié)點(diǎn)的輸入端參數(shù)包括:
起始頻率f1和截止頻率f2,用于確定頻譜范圍;
全局變量cishu,用于記錄所述計(jì)算門限設(shè)置信息的子vi運(yùn)行的次數(shù);
局部變量pnz,用于存儲(chǔ)前10次的計(jì)算結(jié)果;
功率譜密度,所述功率譜密度是波形數(shù)據(jù)格式,包括三個(gè)參數(shù)f0,df,magnitude,分別表示波形的起始頻率、頻率間隔以及對(duì)應(yīng)頻率點(diǎn)的功率密度;
所述matlab節(jié)點(diǎn)的輸出端的參數(shù)及其含義如下:
pn是程序運(yùn)行10次得到的噪聲功率的中位數(shù);
m是波形數(shù)據(jù)長度的一半;
局部變量pnz用于把計(jì)算結(jié)果寫入數(shù)組,以待matlab節(jié)點(diǎn)的程序再次運(yùn)行時(shí)可以從中讀取數(shù)據(jù);
如圖4所示,所述matlab節(jié)點(diǎn)的程序的流程如下所示:
步驟2-1:根據(jù)公式(2)計(jì)算出起始頻率和截止頻率各自在數(shù)組magnitude中對(duì)應(yīng)的下標(biāo)n1和n2,為了確保n1和n2是整數(shù),使用round(n)函數(shù)對(duì)公式(2)運(yùn)算的結(jié)果進(jìn)行四舍五入處理,其中n為n1或者n2,f為f1或者f2:
n=(f-f0)/df(2)
步驟2-2:為了防止起始頻率在數(shù)組magnitude中對(duì)應(yīng)的下標(biāo)n1為0時(shí),程序出錯(cuò),設(shè)置當(dāng)起始頻率在數(shù)組magnitude中對(duì)應(yīng)的下標(biāo)n1為0時(shí),強(qiáng)制把該n1的值調(diào)整為1;
步驟2-3:計(jì)算n1到n2的數(shù)據(jù)點(diǎn)的個(gè)數(shù)n,作為指定頻率段數(shù)組的長度;計(jì)算出輸入數(shù)組magnitude的長度值的一半賦值給m作為輸出;
步驟2-4:把波形幅度信息s中下標(biāo)從n1到n2的元素值,用公式(3)進(jìn)行計(jì)算,并把結(jié)果賦給新數(shù)組x,其中數(shù)組x的下標(biāo)從1開始,長度為n:
pn=10^(pn(db)/10)(3)
其中pn(db)表示用分貝db值表示的噪聲功率;在計(jì)算檢測門限的程序中,要用到噪聲功率pn的實(shí)際值,可用公式(3)把分貝值轉(zhuǎn)換為實(shí)際值。
步驟2-5:高斯噪聲信號(hào)的能量在頻域內(nèi)的表達(dá)式為公式(4)所示:
由于在某個(gè)頻段存在pu信號(hào),不可能對(duì)整個(gè)頻段的功率值疊加來求噪聲功率。利用高斯噪聲信號(hào)的功率譜均值p(f)是一個(gè)固定值,可以先求特定頻段的均值p(f)df,然后以此均值p(f)df乘以頻譜圖數(shù)據(jù)的點(diǎn)數(shù),求取整個(gè)頻段的噪聲功率p(t);
進(jìn)行到步驟2-5,程序已經(jīng)完成了對(duì)所需參數(shù)m,pn的計(jì)算,但是為了數(shù)據(jù)的準(zhǔn)確性,下面的步驟考慮從多組數(shù)據(jù)中計(jì)算中位數(shù)作為輸出。
步驟2-6:把pn賦值給數(shù)組局部變量pnz,數(shù)組的下標(biāo)設(shè)置為程序運(yùn)行的次數(shù),也就是全局變量cishu;
步驟2-7:根據(jù)全局變量cishu判斷所述matlab節(jié)點(diǎn)的程序是否運(yùn)行了10次,如果全局變量cishu等于10,執(zhí)行步驟2-8,否則執(zhí)行步驟2-9;
步驟2-8:求取數(shù)組局部變量pnz的中位數(shù),把結(jié)果賦值給數(shù)組局部變量pnz,并把pnz作為輸出,執(zhí)行步驟2-9;
步驟2-9:全局變量cishu自加1,表示程序已經(jīng)完成了一次計(jì)算pn,cishu是一個(gè)全局變量,在主程序初始運(yùn)行時(shí),默認(rèn)值為1;這樣保證了程序的輸出參考了多組值,可以減小突然的脈沖對(duì)結(jié)果的干擾。
也就是通過門限參數(shù)設(shè)置子vi可以得到公式(1)中等號(hào)右邊的兩個(gè)未知參數(shù)(pu信號(hào)的噪聲功率pn和波形數(shù)據(jù)長度值的一半m),下面再利用公式(1)計(jì)算判決門限t,所述計(jì)算判決門限的子vi可以根據(jù)輸入?yún)?shù)計(jì)算出能量檢測的門限值,而其輸入?yún)?shù)包括門限設(shè)置信息和虛警概率,所述門限設(shè)置信息可以從計(jì)算門限設(shè)置信息的子vi中獲取,虛警概率代表把噪聲信號(hào)誤當(dāng)作pu信號(hào)的概率,可以手動(dòng)設(shè)置,默認(rèn)情況下為0.1,所述計(jì)算判決門限的子vi的輸出結(jié)果為檢測門限值t;具體實(shí)現(xiàn)主要通過matlab節(jié)點(diǎn)來進(jìn)行數(shù)據(jù)處理,下面分析matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序。而所述計(jì)算判決門限的子vi包括matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序,所述matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序的數(shù)據(jù)處理流程如下:
步驟3-1:根據(jù)公式(1)可以計(jì)算出虛警概率pf所對(duì)應(yīng)的門限值tn,也就是λf,matlab節(jié)點(diǎn)的數(shù)據(jù)處理程序中包括qfuncinv()函數(shù),其是matlab中的封裝函數(shù),能夠?qū)崿F(xiàn)q-1()的功能;
步驟3-2:因?yàn)楣β首V密度的數(shù)據(jù)的單位是分貝,所以還需要把tn的單位轉(zhuǎn)換成db,轉(zhuǎn)換公式為公式(5)所示,公式(5)中的t(db)表示單位為db的檢測門限值:
t(db)=10lg(tn)(5)
步驟3-3:把結(jié)果t(db)作為判決門限而輸出;
這樣就完成了計(jì)算判決門限的設(shè)計(jì)。
進(jìn)一步地,所述能量檢測模塊是根據(jù)這段頻譜上的值是否存在大于檢測門限值來進(jìn)行判決的,如果這段頻譜上的值大于檢測門限值,就存在pu信號(hào),如果這段頻譜上的值不大于檢測門限值,就不存在pu信號(hào),所述檢測門限值就是所述判決門限;因而說,找到一個(gè)合適的檢測門限,對(duì)檢測結(jié)果有很大的作用。如果門限值太低,就會(huì)使虛警概率pf太大,把噪聲信號(hào)誤認(rèn)為是pu信號(hào);如果門限值太高,就會(huì)使檢測概率pd變小,這樣即使頻譜上存在pu信號(hào),也不一定能判決出來,出現(xiàn)漏檢現(xiàn)象。因此,需要找到一個(gè)合適能量檢測門限值λ(在程序中以t或者tn表示門限值λ),以使檢測概率與虛警概率折中。
另外所述能量檢測模塊包括用于頻譜感知的vi,所述用于頻譜感知的vi可以從輸入的功率密度譜的數(shù)據(jù)中,根據(jù)門限值的大小,來判斷功率密度譜中哪些頻段存在pu信號(hào),還可以根據(jù)檢測結(jié)果,以及fm頻偏的大小,計(jì)算fm發(fā)射信號(hào)的載波頻率,最后,根據(jù)pu信號(hào)范圍中的起始頻率和終止頻率,該用于頻譜感知的vi能夠計(jì)算出這一頻段pu信號(hào)的功率;
所述用于頻譜感知的vi中包括有用于頻譜感知的matlab節(jié)點(diǎn),在所述用于頻譜感知的matlab節(jié)點(diǎn)的輸入端包括一個(gè)全局變量suf,所述用于頻譜感知的matlab節(jié)點(diǎn)的輸出端包括另一個(gè)全局變量suf和全局變量lastpower,其中suf是magnitude數(shù)組的下標(biāo),magnitude數(shù)組也就是數(shù)組s,利用公式(6),可以根據(jù)suf計(jì)算出發(fā)射頻率fw(換一個(gè)角度,也可以把suf理解為發(fā)射頻率fw在magnitude數(shù)組中所對(duì)應(yīng)的下標(biāo)),如果是對(duì)某一載波信號(hào)進(jìn)行分析,則需要在所得結(jié)果的基礎(chǔ)上加上載波頻率fz,如公式(7)所示:
fw=f0+df*suf(6)
fw=fz+f0+df*suf(7)
在所述用于頻譜感知的matlab節(jié)點(diǎn)的輸入端包括pu信號(hào)范圍的兩個(gè)參數(shù)f1和f2,f1和f2分別代表估算pu信號(hào)功率時(shí),計(jì)算范圍的起始頻率和截止頻率;
所述用于頻譜感知的matlab節(jié)點(diǎn)的程序分為順序執(zhí)行的三個(gè)程序部分,所述三個(gè)程序部分包括:
a.頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo);
b.計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf;
c.計(jì)算出指定頻段pu信號(hào)的功率;
所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分可以從頻譜數(shù)組中找到所有可以作為認(rèn)知用戶su的發(fā)射頻率的下標(biāo),所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分判斷頻譜數(shù)組中的下標(biāo)是否可以為認(rèn)知用戶su的發(fā)射頻率的下標(biāo)的標(biāo)準(zhǔn)是:發(fā)射的su信號(hào)不能對(duì)pu信號(hào)造成干擾,所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分的流程如下:
步驟4-1:計(jì)算出數(shù)組s的長度n,和頻偏w對(duì)應(yīng)的數(shù)據(jù)點(diǎn)數(shù)n,并定義一個(gè)和s長度相同,初值為0的數(shù)組x;
步驟4-2:依次遍歷數(shù)組s中的元素,如果元素值大于閾值t,所述閾值t也就是門限值,那么此元素對(duì)應(yīng)下標(biāo)處x的元素值為1,這樣就找到了s中所有大于閾值的點(diǎn),也就可以認(rèn)為下標(biāo)處x所對(duì)應(yīng)的數(shù)組元素值為1處存在pu信號(hào);
步驟4-3:令y等于x,其中y用于記錄所有可以作為發(fā)射頻率的數(shù)據(jù)點(diǎn)位置,令y等于x,就保證了在x(i)等于1處,即存在pu信號(hào)的地方,不能作為發(fā)射頻率對(duì)應(yīng)的下標(biāo),這樣,就只要考慮在pu邊界左右n各點(diǎn)處和數(shù)組y的邊界附近不可以作為發(fā)射頻率對(duì)應(yīng)的下標(biāo)的情況了;
步驟4-4:遍歷x中的每一個(gè)元素,判斷在x(i)是否與x(i)之前的三個(gè)數(shù)的值是否不同,通過這種辦法,找到pu信號(hào)的邊界,所述pu信號(hào)的邊界包括pu信號(hào)上升的邊界和pu信號(hào)下降的邊界,如果判斷的結(jié)果不同,執(zhí)行步驟4-5;如果判斷的結(jié)果相同,執(zhí)行步驟4-10,i為整型變量;
步驟4-5:判斷i-n是否小于1,即判斷i-n是否溢出,如果溢出,令k1=1,如果i-n沒有溢出,令k1=i-n,這時(shí)k1的作用是用來作為找到可以作為發(fā)射頻率的頻段的起始邊界,同樣地,還包括一個(gè)終止邊界,定義為k2,所述k1和k2為整型變量,k2在后面的步驟會(huì)出現(xiàn);
步驟4-6:判斷i+n是否大于n,同樣也是判斷i+n是否溢出,如果溢出,令k2=n;如果沒有溢出,令k2=i+n;
步驟4-7:通過步驟4-5和步驟4-6,已經(jīng)找到了授權(quán)用戶pu邊界處左邊和右邊n個(gè)點(diǎn)的位置是k1到k2,并保證了k1,k2沒有溢出,在這一步驟中,令y中k1和k2之間的下標(biāo)對(duì)應(yīng)的元素值為1;保證邊界左右n個(gè)點(diǎn)的下標(biāo)不能作為發(fā)射頻率的下標(biāo)。
步驟4-8:如果在遍歷的時(shí)候,y數(shù)組元素的下標(biāo)i=1時(shí),即在y數(shù)組的開始處,并且i+n沒有溢出,那么令y數(shù)組的下標(biāo)1到1+n處的元素值為1;
步驟4-9:如果在遍歷的時(shí)候,y數(shù)組元素的下標(biāo)i=n時(shí),即在y數(shù)組的終止處,并且i-n沒有溢出,那么令y數(shù)組下標(biāo)n-n到n處的元素值為1;這樣也就保證了在數(shù)組y的端點(diǎn)處不能作為發(fā)射頻率的下標(biāo)。經(jīng)過對(duì)y的處理后,剩余的y(i)=0的下標(biāo),可以作為發(fā)射頻率的下標(biāo)。
步驟4-10:結(jié)束;
在通過所述頻譜數(shù)組中找到所有可以作為su發(fā)射頻率的下標(biāo)的程序部分找到了所有認(rèn)知用戶su的發(fā)射頻率的下標(biāo)后,就需要從中選擇一個(gè)認(rèn)知用戶su的發(fā)射頻率的下標(biāo)。這時(shí),有兩點(diǎn)需要考慮:一點(diǎn)是認(rèn)知用戶su的發(fā)射頻率的改變不能太頻繁,如果pu信號(hào)只是在邊界處頻繁抖動(dòng),不需要改變認(rèn)知用戶su的發(fā)射頻率對(duì)應(yīng)的下標(biāo);另一點(diǎn)是,假設(shè)已經(jīng)找到了認(rèn)知用戶su的發(fā)射頻率對(duì)應(yīng)的下標(biāo),并且認(rèn)知用戶su已經(jīng)在根據(jù)這個(gè)下標(biāo)轉(zhuǎn)換后的頻率處發(fā)射信號(hào),除非在認(rèn)知用戶su的發(fā)射頻率的頻段內(nèi)出現(xiàn)pu信號(hào),否則也不能改變su發(fā)射頻率對(duì)應(yīng)的下標(biāo)。
所述計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分的流程如下:
步驟5-1:對(duì)所述計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分的重要參數(shù)初始化,令i=1和power=0,為下面計(jì)算發(fā)射頻率對(duì)應(yīng)的下標(biāo)以及pu信號(hào)的能量做準(zhǔn)備,其中i代表發(fā)射頻率下標(biāo)的初始值,power代表pu信號(hào)的初始能量值;
步驟5-2:以while循環(huán)的方式來逐一判斷y(i)是否為1,如果y(i)為1,i進(jìn)行自加運(yùn)算,否則所述計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分跳出while循環(huán),通過這種辦法找到y(tǒng)(i)中第一個(gè)其值不為1的下標(biāo)i,已經(jīng)知道該y(i)的值為0,表示下標(biāo)i處對(duì)應(yīng)的頻率可以作為發(fā)射頻率,這樣就找到了第一個(gè)可以作為su發(fā)射頻率的對(duì)應(yīng)下標(biāo)的值;
步驟5-3:通過步驟5-2,雖然找到了su發(fā)射頻率的對(duì)應(yīng)下標(biāo)值,但這個(gè)值不一定要轉(zhuǎn)換成發(fā)射頻率。在這一步驟,判斷suf分別加n和減n后是否在1到n范圍內(nèi),如果在1到n內(nèi),說明suf值為上次發(fā)射頻率對(duì)應(yīng)的下標(biāo),就要根據(jù)suf值計(jì)算其左邊和右邊的n個(gè)數(shù)據(jù)點(diǎn)的能量,把結(jié)果賦值給power,然后執(zhí)行步驟5-4,如果n不在1到n內(nèi),則說明suf不是上次發(fā)射頻率對(duì)應(yīng)的下標(biāo),直接執(zhí)行步驟5-4;
步驟5-4:判斷i+10是否小于n,如果是,說明存在合適的發(fā)射頻率的下標(biāo),執(zhí)行步驟5-5;如果不是,說明檢測到的頻率下標(biāo)不能作為發(fā)射頻率的下標(biāo),執(zhí)行步驟5-7;
步驟5-5:判斷是否滿足三個(gè)條件,所述三個(gè)條件為suf等于1、|suf-i|大于10和power比0.7*lastpower小,這三個(gè)條件均滿足執(zhí)行步驟5-6;其中,第一個(gè)條件suf等于1的意義是上一次沒有找到合適的發(fā)射頻率或者是上次沒有發(fā)射信號(hào);第二個(gè)條件|suf-i|大于10的意義是i值的變化相比suf而言,超過了10單位,這樣是為了給檢測信號(hào)10個(gè)單位的抖動(dòng)空間,如果上次信號(hào)的邊界下標(biāo)變化不超過10個(gè)單位就不需要變化;第三個(gè)條件power比0.7*lastpower的意義是,當(dāng)一個(gè)su信號(hào)已經(jīng)發(fā)射,如果此時(shí)在su信號(hào)的頻帶上pu發(fā)射信號(hào),su信號(hào)就需要避讓,實(shí)際上是根據(jù)su信號(hào)所在頻段內(nèi)的信號(hào)能量是否突增來判斷授權(quán)用戶是否開始占用此頻段。
步驟5-6:將i賦值給全局變量suf,表示找到了新的發(fā)射頻率的下標(biāo),執(zhí)行步驟5-8;
步驟5-7:將1賦值給全局變量suf,表示沒有找到可以作為發(fā)射頻率下標(biāo)的值,執(zhí)行步驟5-8;
步驟5-8:將計(jì)算的power值賦給全局變量lastpower,為下一次判斷su信號(hào)是否需要避讓pu信號(hào)做準(zhǔn)備;
步驟5-9:結(jié)束;
至此,計(jì)算出su信號(hào)的發(fā)射頻率對(duì)應(yīng)的下標(biāo)suf的程序部分找到了發(fā)射頻率對(duì)應(yīng)的下標(biāo)。
計(jì)算出指定頻段pu信號(hào)的功率的流程如下:
步驟6-1:把pu信號(hào)的能量初始化為0,并把設(shè)置的檢測頻率范圍的邊界f1和f2利用公式(27)轉(zhuǎn)換成對(duì)應(yīng)的下標(biāo)fn1和fn2;
步驟6-2:判斷fn1和fn2是否小于等于0,如果小于等于0,說明fn1或fn2不合法,就把它們的值改為1,否則,直接執(zhí)行步驟6-3;
步驟6-3:判斷fn1是否小于fn2,如果是,執(zhí)行步驟6-4;否則執(zhí)行步驟6-5,在這里,fn1對(duì)應(yīng)起始頻率,fn2對(duì)應(yīng)截止頻率,必須fn1大于fn2才有意義;
步驟6-4;在數(shù)組s中,從下標(biāo)fn1到fn2找到對(duì)應(yīng)元素中大于門限值t的元素,先把這個(gè)元素通過公式(8)去掉db單位,其中ps(db)是單位為db的pu信號(hào)的功率,然后把轉(zhuǎn)換后的結(jié)果遞加到pu信號(hào)的功率ps中,這樣,可以求出f1到f2中存在的pu信號(hào)的能量ps;
ps=10^(ps(db)/10)(8)
步驟6-5:結(jié)束。
到這里,程序完成了對(duì)pu信號(hào)功率的估算,結(jié)合前面對(duì)噪聲功率pn的估算,利用公式(9)可以計(jì)算出pu信號(hào)的信噪比snr。
snr=10lg(ps/pn)(9)
所述發(fā)射fm信號(hào)模塊中包括用來發(fā)射fm信號(hào)的子vi和發(fā)射fm波的前面板,所述發(fā)射fm信號(hào)模塊根據(jù)得到的所述認(rèn)知用戶su的發(fā)射頻率、適當(dāng)?shù)膇q速率和頻偏這樣的參數(shù),運(yùn)行所述用來發(fā)射fm信號(hào)的子vi可以利用usrp的發(fā)射端發(fā)射fm信號(hào)運(yùn)行,所述用來發(fā)射fm信號(hào)的子vi有三個(gè)輸入,所述三個(gè)輸入分別為載波頻率、iq速率以及fm頻偏,所述認(rèn)知用戶su的發(fā)射頻率就是fm載波頻率,通過所述發(fā)射fm波的前面板輸入所述用來發(fā)射fm信號(hào)的子vi所需的載波頻率、iq速率以及fm頻偏的數(shù)值,通過所述發(fā)射fm波的前面板還能輸入所述niusrp配置信號(hào)vi,也就是niusrpconfigure函數(shù),所需的配置參數(shù),通過所述發(fā)射fm波的前面板輸入的配置參數(shù)用于設(shè)置usrp信號(hào)的發(fā)射,所述用來發(fā)射fm信號(hào)的子vi中包括波形重采樣函數(shù)和fm調(diào)制函數(shù);
在所述發(fā)射fm波的前面板輸入所述用來發(fā)射fm信號(hào)的子vi所需的載波頻率、iq速率、fm頻偏的數(shù)值以及所述niusrp配置信號(hào)vi所需的配置參數(shù)后,所述用來發(fā)射fm信號(hào)的子vi把iq速率傳送到所述波形重采樣函數(shù),所述波形重采樣函數(shù)的輸入端獲取到所述iq速率和所述音頻信號(hào)存儲(chǔ)模塊寫入的音頻信號(hào)的數(shù)據(jù)信息后,根據(jù)這兩個(gè)參數(shù),所述波形重采樣函數(shù)可以控制音頻信號(hào)的每個(gè)數(shù)據(jù)點(diǎn)每隔時(shí)間間隔δt來形成重采樣后的波形數(shù)據(jù)發(fā)送,由此實(shí)現(xiàn)音頻信號(hào)的比特率與usrp信號(hào)發(fā)射的iq速率相匹配的功能;
接著所述fm調(diào)制函數(shù)是labview軟件里rfcommunications軟件包里ip封裝的一個(gè)函數(shù),可以實(shí)現(xiàn)對(duì)信號(hào)的fm調(diào)制,所述fm調(diào)制函數(shù)有兩個(gè)輸入?yún)?shù),一個(gè)是重采樣后的波形數(shù)據(jù),一個(gè)是fm信號(hào)的頻偏,采樣后的波形數(shù)據(jù)從波形重采樣函數(shù)獲得,fm信號(hào)的頻偏為常數(shù);
最后實(shí)現(xiàn)對(duì)信號(hào)的fm調(diào)制后,調(diào)制后的信號(hào)就通過所述ni-usrp驅(qū)動(dòng)程序在所述fm載波頻率下發(fā)射出去。
如果要考慮對(duì)連續(xù)的fm信號(hào)解調(diào),必須保證usrp能連續(xù)地接收信號(hào),這個(gè)問題可以通過while循環(huán)來解決。對(duì)usrp接收到的信號(hào)進(jìn)行處理,是以while循環(huán)的方式實(shí)現(xiàn)usrp能連續(xù)的接收信號(hào)的條件下通過所述解調(diào)fm信號(hào)模塊對(duì)接收到的數(shù)據(jù)進(jìn)行fm處理,該fm處理只需要對(duì)niusrpfetchrxdate驅(qū)動(dòng)程序的輸出結(jié)果進(jìn)行處理,所述解調(diào)fm信號(hào)模塊中包括用來播放音頻信號(hào)的simplesound子vi、fm解調(diào)音頻信號(hào)的前面板和處理信號(hào)的函數(shù),所述simplesound子vi根據(jù)變量action值選擇條件語句中的分支,若變量action值為“open”,就用soundoutputconfigure函數(shù)來配置聲卡為播放音頻做準(zhǔn)備;若變量action值為“write”,先用一個(gè)normalizewaveform函數(shù)對(duì)波形數(shù)據(jù)進(jìn)行歸一化,再把處理后的數(shù)據(jù)用soundoutputwrite函數(shù)送入計(jì)算機(jī)的聲卡進(jìn)行播放;若變量action值為“close”,就用soundoutputclear函數(shù)清除送給聲卡的緩存數(shù)據(jù),結(jié)束音頻的播放,所述fm解調(diào)音頻信號(hào)的前面板的左側(cè)部分為用來錄入niusrp函數(shù)的配置參數(shù)的部分,其中numberofsamples配置參數(shù)代表每次從數(shù)據(jù)接收信道中接收到的樣本數(shù),numberofsamples和iq速率iqrate有以下關(guān)系:
fetchtime為時(shí)域中完成一次數(shù)據(jù)采集的時(shí)間,resolutionbandwidth為頻域中的頻率分辨率,即每個(gè)相鄰數(shù)據(jù)間的頻率間隔;所述fm解調(diào)音頻信號(hào)的前面板的右側(cè)部分為用于顯示解調(diào)后的波形信號(hào)圖和功率頻譜圖的波形顯示部分,具體處理方式如下;
所述處理信號(hào)的函數(shù)對(duì)usrp接收到的連續(xù)信號(hào)在whileloop中進(jìn)行處理,如果在數(shù)據(jù)信號(hào)接收正常的條件下按照fm解調(diào)音頻信號(hào)的前面板中錄入的niusrp函數(shù)的配置參數(shù)來持續(xù)接收數(shù)據(jù),把接收的數(shù)據(jù)轉(zhuǎn)換為極坐標(biāo)的形式,把極坐標(biāo)中的相位信號(hào)展開,展開后對(duì)數(shù)據(jù)進(jìn)行微分,微分后分別把usrp采樣率與聲卡信息的采樣率匹配、把數(shù)據(jù)實(shí)數(shù)部分和虛數(shù)部分分開和求信號(hào)的功率密度值,然后把數(shù)據(jù)實(shí)數(shù)部分和虛數(shù)部分分開和求信號(hào)的功率密度值后的數(shù)據(jù)分別進(jìn)行顯示然后結(jié)束該處理信號(hào)的函數(shù)的運(yùn)行,而把usrp采樣率與聲卡信息的采樣率匹配后的數(shù)據(jù)送到聲卡在把用來播放音頻信號(hào)的simplesound子vi中的action值變?yōu)椤皐rite”的條件下播放,播放完成后結(jié)束該處理信號(hào)的函數(shù)的運(yùn)行,所述把極坐標(biāo)中的相位展開是通過unwrap函數(shù)實(shí)現(xiàn)的,所述unwrap函數(shù)可以把不連續(xù)的相位信號(hào)轉(zhuǎn)換成連續(xù)的相位信號(hào),避免相位的突變。
接下來分析該方法和系統(tǒng)接收到的無線信號(hào)的效果,先對(duì)所述各前面板的參數(shù)進(jìn)行設(shè)置,為后面分析程序運(yùn)行效果做準(zhǔn)備。然后根據(jù)程序運(yùn)行結(jié)果來驗(yàn)證獲取的門限值的合理性,以及得出pu信號(hào)受噪聲干擾較小的特點(diǎn)。之后,程序分析了能量檢測的結(jié)果,得到程序能夠從頻譜中較好地找出pu信號(hào)的結(jié)論。最后,對(duì)從usrp接收天線接收的信號(hào)進(jìn)行解調(diào),根據(jù)解調(diào)效果來驗(yàn)證su信號(hào)發(fā)射頻率的設(shè)置是否得當(dāng),具體過程如下:
在使用usrp之前,需要把主機(jī)計(jì)算機(jī)pc的ip地址設(shè)置成192.168.10.1。在默認(rèn)情況下,usrp的ip為192.168.10.2,這個(gè)地址只能與192.168.10.1配對(duì)。如果把主機(jī)計(jì)算機(jī)pc的ip地址設(shè)置成其它的地址,即使usrp與主機(jī)計(jì)算機(jī)pc之間通過網(wǎng)線連接,usrp也無法實(shí)現(xiàn)與主機(jī)計(jì)算機(jī)pc的通信。如圖11所示是基于usrp對(duì)無線信號(hào)進(jìn)行頻譜感知的程序前面板。設(shè)定iqrate為4m,carrierfrequency為91m。在能量檢測譜中,橫坐標(biāo)的范圍是-2m到2m,代表檢測頻譜帶寬為4m。在橫坐標(biāo)值為0處,代表載波頻率91mhz的能量??梢哉J(rèn)為檢測頻譜的范圍是89mhz~93mhz。在前面板左下方的參數(shù)設(shè)置區(qū)中,可以根據(jù)usrp接收信號(hào)的“能量密度圖”手動(dòng)設(shè)置噪聲檢測頻率范圍,和pu信號(hào)檢測頻率范圍。程序可以通過這兩個(gè)范圍值估算出接收信號(hào)的噪聲功率和pu功率。在圖11所示的例子中,設(shè)置的檢測噪聲信號(hào)的頻率范圍是-1.9mhz~-1.6mhz(沒有考慮載波頻率是91mhz,實(shí)際上的檢測頻率范圍是(91-1.9=89.1)mhz~(91-1.6=89.4)mhz),估算得到的噪聲功率為3.43×10-11。將此噪聲功率以及檢測數(shù)據(jù)點(diǎn)的個(gè)數(shù)(在程序中通過length函數(shù)求得)帶入公式(3-11),就可以求出檢測門限值為-104.562db。通過觀察,可以看出此門限值能好地區(qū)分出“能量密度譜”中pu信號(hào)和噪聲信號(hào)。所以,程序得到的門限值比較合理。
設(shè)置pu信號(hào)的檢測頻率范圍為-1.2mhz~-0.5mhz。在此范圍內(nèi),如果檢測到的信號(hào)能量值大于門限值視為pu信號(hào)的功率值,把功率值的平均數(shù)作為輸出結(jié)果“pu信號(hào)功率”。圖11中得到的pu信號(hào)功率為1.968×10-7。然后根據(jù)噪聲功率,和pu信號(hào)功率,利用對(duì)應(yīng)公式,可以求出接收信號(hào)的信噪比為37.58db。這個(gè)信噪比的值比較大,說明usrp接收到的pu信號(hào)受噪聲的影響較小。根據(jù)計(jì)算得到的門限值,可以對(duì)頻譜進(jìn)行能量檢測,圖12是對(duì)圖11中能量密度譜的檢測結(jié)果。在圖12中,幅度值為1表示在該頻率處為pu信號(hào),幅度值為0表示在該頻率處為噪聲信號(hào)。圖12顯示在89.5mhz,90mhz,91mhz處存在pu信號(hào)。在圖11的能量密度譜的在這3個(gè)頻率處附近,信號(hào)的功率明顯比其它頻率處的功率大,可以認(rèn)為這3個(gè)頻率附近的信號(hào)為pu信號(hào)。所以,程序較為準(zhǔn)確地完成了頻譜感知,找到了給定頻譜中pu信號(hào)的位置。
另外根據(jù)檢測結(jié)果,程序計(jì)算的“發(fā)射頻率”為89mhz。點(diǎn)擊圖11中的“是否發(fā)射信號(hào)”按鍵,程序以89mhz為載波頻率,發(fā)射一個(gè)fm波。然后設(shè)置接收fm信號(hào)的程序的載波頻率為89mhz,對(duì)su信號(hào)進(jìn)行接收,可以得到圖13的解調(diào)結(jié)果。fm解調(diào)程序可以對(duì)載波頻率處的fm信號(hào)進(jìn)行解調(diào),解調(diào)后的音頻信號(hào)頻譜圖在圖13中右下方。解調(diào)程序可以播放解調(diào)后的音頻信號(hào),播放音頻的時(shí)候雖然有一些噪聲,但還是能夠粗略地恢復(fù)未調(diào)制的音頻信號(hào)。這說明,發(fā)射后的su信號(hào)與感知頻譜上的pu信號(hào)沒有共占某一段頻譜。所以,程序找到了合適的su發(fā)射頻率,并且其頻譜也沒有與pu信號(hào)的頻譜產(chǎn)生混疊。
本技術(shù)方案的技術(shù)效果為:在限定只用一臺(tái)usrp的情況下,可以用一根天線作為接收天線接收無線信號(hào),通過頻譜感知程序中的usrp頻譜感知模塊對(duì)接收的無線信號(hào)進(jìn)行頻譜感知,找到可用頻段后,通過另一根天線在此可用頻段上發(fā)射fm信號(hào)。
以上以實(shí)施例的方式對(duì)本發(fā)明作了描述,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,本公開不限于以上描述的實(shí)施例,在不偏離本發(fā)明的范圍的情況下,可以做出各種變化、改變和替換。