版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
5.1概
述
為了跟蹤和解碼GPS信號,首先要捕獲到GPS信號。將捕獲到的GPS信號的必要參數立刻傳遞給跟蹤過程,再通過跟蹤過程便可得到衛(wèi)星的導航電文。GPS衛(wèi)星處于高速運動中,因此,其頻率會產生多普勒頻移。載波頻率與C/A碼的多普勒頻移將在下面詳細講述。為覆蓋高速衛(wèi)星預期中的所有多普勒頻率范圍,捕獲方法覆蓋的頻率范圍必須在±10kHz之內。一旦捕獲到GPS信號,立刻去測量兩個重要參數:C/A碼的起始點和載波頻率(因為多普勒頻移而變化)。接收機接收到的一系列數據往往包含多個衛(wèi)星信號,每個信號具有不同的C/A碼的不同起始點和不同的多普勒頻率。
目前一頁\總數一百二十四頁\編于十三點針對某個特定的衛(wèi)星信號,捕獲過程就是要找到C/A碼的起始點,并利用找到的起始點展開C/A碼頻譜,一旦復現了C/A碼的頻譜,輸出信號將變成連續(xù)波(ContinuousWave,CW),于是便得到其載波頻率。也就是說,捕獲過程就是要獲得輸入信號的C/A碼的起始點和載波頻率,然后傳遞給跟蹤過程。捕獲與跟蹤過程所用到的數據都是從原始的衛(wèi)星信號經過下變頻器(即與中頻混頻)之后收集到的,其中頻(IF)為21.25MHz,采樣頻率為5MHz,信號的中心頻率為1.25MHz。這組數據來源于我們設計的衛(wèi)星信號接收裝置,但是用模擬仿真算法也可以產生類似的數據,以驗證本章介紹的衛(wèi)星信號的捕獲算法。
目前二頁\總數一百二十四頁\編于十三點5.2GPS衛(wèi)星信號的多普勒效應GPS衛(wèi)星繞地球旋轉一周的時間是11h58min2.05s,從衛(wèi)星軌道的近似半徑可以求得衛(wèi)星的角速度dθ/dt和運動速度vs:
(5-1)目前三頁\總數一百二十四頁\編于十三點這里rs表衛(wèi)星軌道的平均半徑。我們知道,一個太陽日和一個恒星日之間相差3min55.91s,在這段時間里,衛(wèi)星大約運行了914km(3874m/s×235.91s),對應地球表面與衛(wèi)星的最高點,相應的角度近似為0.045rad(914/20192)或2.6°。如果衛(wèi)星接近地平線,相應的角度為0.035rad或者2°。因此我們可以看出,對于地球表面的固定一點,在每天的同一時間里,衛(wèi)星位置大約改變2°~2.6°。目前四頁\總數一百二十四頁\編于十三點如圖5-1所示,衛(wèi)星在位置S處,用戶在位置A處,相對用戶的衛(wèi)星角速度vd造成了多普勒頻移,其中vd值為:(5-2)根據衛(wèi)星軌道速度,取水平方向的最大值,
得到多普勒角速度的最大值為:
(5-3)
目前五頁\總數一百二十四頁\編于十三點圖5-1衛(wèi)星運動引起的多普勒頻移
目前六頁\總數一百二十四頁\編于十三點這個值與高速航空衛(wèi)星的速度相等。由地面設施引起的多普勒頻移通常非常小,即使它直接相對衛(wèi)星運動引起了最大多普勒效應。對由C/A碼調制過的頻率L1(f=1575.42MHz),最大的頻移為:
(5-4)
這里c是光速。
因而,
對于一固定觀測器來說,最大的多普勒頻移是±5kHz。
目前七頁\總數一百二十四頁\編于十三點如果地面GPS接收設備高速移動,就要考慮進多普勒效應了。要單獨產生一個±5kHz的頻率范圍,接收設備需以2078m/h的速度相對衛(wèi)星運動,這個速度將包含最高速度的航空器。因而,在設計GPS接收機時,如果接收機用在低速設備,則認為載波頻率的多普勒頻移范圍在±5kHz;相反地,如果用在高速設備,就要合理假定其多普勒頻移的范圍在±10kHz。這些值對于確定捕獲過程的搜索頻率范圍是至關重要的。因此,就有了引言中我們提到的為覆蓋高速衛(wèi)星預期中的所有多普勒頻率范圍,捕獲方法覆蓋的頻率范圍必須在±10kHz之內之說。
目前八頁\總數一百二十四頁\編于十三點由于C/A碼頻率非常低,所以C/A碼上的多普勒頻移也是非常小的。C/A碼的頻率是1.023MHz,比載波頻率低1540(1575.42/1.023)倍。C/A碼的多普勒頻率為:
(5-5)
如果接收機高速移動,這個值就得取雙倍,為6.4Hz,得到的這個值對跟蹤過程(BASS方法)來說是至關重要的,這點我們將在下一章討論。在BASS跟蹤過程中,輸入信號與本地產生數據必須要緊密對齊,而C/A碼的多普勒頻移可能造成輸入碼與本地生成碼的不對齊。
目前九頁\總數一百二十四頁\編于十三點在數字化衛(wèi)星信號中,如果數據用5MHz采樣(稱為采樣頻率),則每個采樣之間相隔200ns(稱為采樣時間)。在跟蹤過程中,我們期望本地生成信號與輸入信號未對齊的長度在半個采樣時間或近似100ns之內,若兩個信號之間相差超過這個長度,跟蹤將失鎖,即失去跟蹤靈敏性。C/A碼的基波時間為977.5ns或1/1.023×106s,它移動一個周期需花費156.3ms(1/6.4)。對這句話的理解是:多普勒頻移使C/A碼的頻率由1.023×106變?yōu)閇JP2]1.023×106+6.4,即每秒內多變化了6.4個周期,則多變化一個周期的時間為(1/6.4)ms。目前十頁\總數一百二十四頁\編于十三點因此,它移動100ns的數據長度,近似花費16ms(100×156.3/977.5)。在高速導航器中,需每16ms選擇一批數據,以保證輸入信號與本地生成碼更好地匹配。但是由于輸入信號中有噪聲,用1ms的數據可能不能非常精確地匹配,因而可以拓寬輸入信號的調整時間,每20ms選擇一批輸入信號。
對一個低速導航器來說,這個時間可拓寬到40ms。
目前十一頁\總數一百二十四頁\編于十三點從以上討論我們知道,輸入信號的調整取決于采樣頻率。采樣頻率高將縮短調整時間,因為采樣時間變短,在半個周期內匹配輸入碼與本地生成碼的時間變短。如果輸入信號的強弱和跟蹤靈敏度不成問題,則輸入信號的調整時間可以拓寬。然而,輸入信號與本地生成信號相離必須在半個基波或488.75ns(977.5/2)之內,這個時間看做是輸入信號與本地生成信號相離允許的最大值。C/A碼的多普勒頻率是6.4Hz,調整時間可以拓寬到78.15ms(1/2×6.4)。
目前十二頁\總數一百二十四頁\編于十三點5.3GPS衛(wèi)星信號捕獲的考慮
5.3.1捕獲時的最大電文長度
C/A碼長1ms,那么至少要用1ms的電文來捕獲,甚至只用1ms的電文來捕獲時,都可能發(fā)生導航電文相位偏移。如果電文中有數據偏移,電文的下一個1ms將不會含有偏移。因此,為了保證捕獲電文中不含有數據偏移,需要用兩組連續(xù)的電文來捕獲,這個電文最大長度是10ms。如果使用兩組連續(xù)的10ms電文來捕獲,
就保證了在某一組電文中不含相位偏移。
目前十三頁\總數一百二十四頁\編于十三點限制電文長度的第二個因素是C/A碼的多普勒效應。如果理想相關峰值是1,當C/A碼超前或滯后1/2碼時,相關的峰值將降為0.5,對應地,幅值下降6dB。如上節(jié)所討論的,假定未對準的C/A碼允許在半個基波(0.489μs)內,基波頻率是1.023MHz,C/A碼上預期的最大多普勒頻移是6.4Hz,那么兩個相差6.4Hz的頻率交換半個基波需要78ms(1/2×6.4),這個數據遠大于10ms。目前十四頁\總數一百二十四頁\編于十三點5.3.2捕獲中的頻率步長捕獲時的另一個考慮因素是捕獲中剝離載波所需的頻率。在前文曾提過,需被覆蓋的多普勒頻率范圍是±10kHz,決定覆蓋這20kHz范圍的步進頻率非常重要。步進頻率的大小與捕獲中的電文長度緊密相關。如果輸入信號與本地混頻信號相距1個周期,它們兩者沒有相關性;如果兩者小于1個周期,則它們有部分相關性。隨意選取兩個信號允許的最大頻率相離是0.5個周期,如果電文記錄長度為1ms,一個1kHz的信號將在1ms內變換一個周期,為了保持1ms內的最大頻率相離在0.5個周期,步進頻率須為1kHz。在這種情況下,在輸入信號與卷積信號之間最大限度的頻率相離是500Hz/s或0.5Hz/ms,且輸入信號剛好在兩個頻率點之間。如果電文記錄長度為10ms,100Hz的搜索步進頻率就可以滿足要求??创@個問題的一個簡單方法是頻率相離與電文長度成反向關系。
目前十五頁\總數一百二十四頁\編于十三點由以上的討論可以得出如下結論:當捕獲輸入電文為1ms長時,步進頻率是1kHz;當電文為10ms時,步進頻率是100Hz。從這個簡單的討論可以明顯看出,捕獲中的操作執(zhí)行次數與總的數據點并不是成線性比例關系,當電文長度從1ms上升到10ms時,電文長度上升10倍,頻率點數目也上升了10倍,捕獲所需的操作次數上升了不止10倍。因此,實際捕獲時,如果強調捕獲的速度的話,電文長度需保持在最小值。執(zhí)行次數的增加,取決于實際捕獲所用的方法,下面將討論具體的捕獲方法。
目前十六頁\總數一百二十四頁\編于十三點5.4GPS衛(wèi)星信號的捕獲方法5.4.1傳統(tǒng)捕獲方法捕獲的基本思想就是展開輸入信號,找到載波頻率。如果相位正確的C/A碼與輸入信號相乘,輸入信號將如圖5-2中所示變成一個連續(xù)信號。圖5-2中最上端是輸入信號,這個信號是C/A碼編碼的射頻信號相位,注意到射頻信號與C/A碼是任意選擇的,它們并不代表衛(wèi)星傳輸過來的真正的信號。中間的圖表示C/A碼,其值在±1之間。最下端的圖是連續(xù)信號,代表輸入信號與C/A碼的乘積,其對應的頻譜不再是擴頻,而是一個連續(xù)信號,這個過程有時稱做輸入信號的C/A碼剝離。
目前十七頁\總數一百二十四頁\編于十三點圖5-2C/A編碼的輸入信號與本地C/A碼相乘
目前十八頁\總數一百二十四頁\編于十三點一旦輸入變成連續(xù)信號,通過傅立葉變換可以知曉其頻率。如果輸入電文長是1ms,則傅立葉變換的頻率分辨率為1kHz??梢栽O置一個閾值,即一個門限來判斷一個頻率分量是否足夠大。高于這個門限的最高頻率分量就是我們要找的頻率。如果用5MHz使輸入信號數字化,1ms的電文將含有5000個數據點,一個5000點的FFT(快速傅立葉變換)將產生5000個頻率分量。然而,5000個頻率分量中只有前2500個頻率分量包含有用信息,后2500個是前2500個頻率分量的復共軛。頻率分辨率是1kHz,因此,FFT覆蓋的總頻率范圍是2.5MHz,是采樣頻率的一半。但我們感興趣的頻率范圍只有20kHz,而非2.5MHz,因此,為了節(jié)省計算時間,
可以用DFT(離散傅立葉)方法,
只計算相隔1kHz的21個頻率分量。
目前十九頁\總數一百二十四頁\編于十三點由于輸入信號中C/A碼的起始點還未知,因此,必須先找到這個點。為了找到這個點,我們產生本地的一個C/A碼,將其數字化為5000個點,且與輸入信號點對點相乘,對此乘積的結果進行FFT或DFT,可以找到其頻率。為了搜索1ms的電文,輸入電文與本地產生數字化的C/A碼必須彼此相對移動5000次。如果使用FFT,需操作5000次,每次操作包含5000個點對點的乘積和一個5000點的FFT。由于只有2500個頻率分量提供信息,其余2500個分量提供的是多余的信息,因此,輸出的5000點數據每個含有2500個頻率分量,這樣,在頻域共有1.25×107(5000×2500)個輸出。在這1.25×107個輸出中最高幅值如果大于預先設定的門限值,則該分量就是期望值。在如此多的數據中尋找最高頻率分量也是非常費時的。由于在期望的20kHz的FFT輸出中,只有21個頻率分量是我們感興趣的,總輸出可以降低到105000(5000×21)個。通過這種方法,可以用時間分辨率為200ns(1/5MHz)和1kHz的頻率分辨率找出C/A碼的起始點。
目前二十頁\總數一百二十四頁\編于十三點如果使用10ms的電文,因為信號只需要卷積1ms,因此需要5000次操作。每次操作包含50000個點對點乘積和50000次FFT,總共有1.25×108(5000×25000)個輸出結果。如果在預期的20kHz范圍內只考慮201個頻率分量,需從1005000(5000×201)個結果中挑選,因此可以看出,從1ms到10ms操作的增長是非常顯著的。
尋找C/A碼起始點的時間分辨率仍是200ns,
但頻率分辨率提高到了100Hz。
目前二十一頁\總數一百二十四頁\編于十三點傳統(tǒng)捕獲方法是由硬件實現的,硬件主要用以執(zhí)行以上所講的處理。假定輸入信號用5MHz數字化,一個可行方法是產生5000點的數字C/A碼,并與輸入信號點對點相乘,每200ns執(zhí)行一次5000點相乘,每200ns對一個5000點相乘的結果進行FFT頻率分析,圖5-3示意了該過程。如果C/A碼與輸入電文匹配,FFT結果中將含有一個強分量,如前所述,這個方法將產生1.25×107(5000×2500)個輸出結果,然而,只有在±10kHz頻率范圍內的輸出結果中挑選,這個約束使得排序過程變簡單了。
目前二十二頁\總數一百二十四頁\編于十三點圖5-3用C/A碼和頻率分析進行捕獲
目前二十三頁\總數一百二十四頁\編于十三點完成這個操作的另一個方法是通過離散傅立葉變換(DFT),將本地產生碼變換成含有C/A碼和射頻信號的電文。射頻是復數,可用ejwt表示。本地碼信號由射頻與C/A碼乘積獲得,因此,本地碼也是復數。假定L1頻率(1575.42MHz)被轉換到21.25MHz,并用5MHz數字化,輸出頻率將會是1.25MHz;同時假定捕獲過程以1kHz的步長搜索1250±10kHz的頻率范圍,且總共有21個頻率分量,本地碼lsi可用下式表示:
(5-6)目前二十四頁\總數一百二十四頁\編于十三點其中,s表示衛(wèi)星的編號;i=1,2,3,…,21;Cs表示編號為s的衛(wèi)星的C/A碼;fi=1250-10,1250-9,1250-8,…,1250+10kHz。本地信號須用5MHz數字化,產生5000個數據點,這21組數據代表相距1kHz的21個頻率。這些數據與輸入信號有關,如果本地產生信號包含正確的C/A碼和正確的頻率分量,當遇到正確的C/A碼相位時,輸出結果將會特別高。目前二十五頁\總數一百二十四頁\編于十三點圖5-4通過本地產生C/A碼和射頻碼捕獲
目前二十六頁\總數一百二十四頁\編于十三點5.4.2循環(huán)相關捕獲方法1.循環(huán)卷積與循環(huán)相關在講述循環(huán)相關捕獲方法之前,首先簡單介紹執(zhí)行相關操作的主要數學運算。如果一個輸入信號經過一個線性時不變系統(tǒng),可由卷積運算得到時域結果,也可由傅立葉變換得到頻域結果。如果系統(tǒng)脈沖響應是h(t),輸入信號x(t)可通過卷積產生如下的輸出y(t):(5-7)目前二十七頁\總數一百二十四頁\編于十三點通過傅立葉變換,y(t)的頻域響應為:
(5-8)令變量t-τ=u,那么
(5-9)目前二十八頁\總數一百二十四頁\編于十三點為得到時域輸出,需對Y(f)進行反傅立葉變換,
結果可寫成:
(5-10)
此處,*表示卷積,F-1表示傅立葉反變換。可以發(fā)現一個簡單的關系,時域的卷積等效于頻域的傅立葉變換,或者說頻域卷積運算等效于時域傅立葉變換,
這兩種關系可以寫成:
(5-11)
通常稱其為傅立葉變換中卷積的二元性。
目前二十九頁\總數一百二十四頁\編于十三點這個思想還可用于離散系統(tǒng)。與連續(xù)時域表達式不同,響應y(n)可以表達成:
(5-12)此處,x(m)表示輸入信號,h(n-m)是離散時域系統(tǒng)響應。注意到,該式子中,h(n-m)中的時移是循環(huán)的,因為離散操作是周期性的。對上式進行離散傅立葉變換(DFT),結果為:(5-13)目前三十頁\總數一百二十四頁\編于十三點然而,捕獲時用到的并不是卷積運算,而是相關運算,它與卷積運算不同。x(n)與h(n)之間的相關表示為:
(5-14)上式與式(5-12)的惟一不同點就在于h(n+m)中的m前面的符號不同。h(n)是另一信號,而非線性系統(tǒng)的脈沖響應。z(n)的DFT變換為:(5-15)
目前三十一頁\總數一百二十四頁\編于十三點這里X-1(k)表示離散傅立葉反變換。上式還可寫成:
(5-16)
如果x(n)是實數,x(n)*=x(n),其中*表示復共軛。有了這個關系,Z(k)的幅值為:(5-17)利用上式的這個關系,可得到輸入信號與本地產生信號的相關性。如前所述,這個式子提供了循環(huán)相關性。
目前三十二頁\總數一百二十四頁\編于十三點
2.循環(huán)相關捕獲的方法上面討論了循環(huán)相關的運算法則,利用這些運算法則就可以執(zhí)行捕獲了。然而實際捕獲中,輸入電文不是連續(xù)到達接收機的,因此循環(huán)相關操作適合一組或一批電文。輸入電文經過5MHz的ADC(模擬/數字轉換器)采樣存儲在存儲器中,只有1ms的輸入電文用來尋找C/A碼的起始點,其搜索頻率分辨率即步進頻率是1MHz。
目前三十三頁\總數一百二十四頁\編于十三點捕獲輸入電文,需經過以下幾個步驟:(1)對1ms的輸入電文x(n)進行快速傅立葉變換FFT,將輸入轉換到頻域,值為X(k),這里,n=k=0,1,2,…,4999。(2)取X(k)的復共軛,值為X(k)*。(3)利用式(5-6),產生21個本地碼lsi(n)(i=1,2,…,21),本地碼包含了衛(wèi)星s的C/A碼和一個復射頻信號的乘積,然后用5MHz采樣本地碼,本地碼的頻率fi相距1MHz。(4)對lsi(n)進行FFT,變換到頻域中,值為Lsi(k)。(5)將X(k)*與Lsi(k)點對點相乘,結果為Rsi(k)。目前三十四頁\總數一百二十四頁\編于十三點(6)對Rsi(k)進行反傅立葉變換,變換到時域中的值為rsi(n),得到其絕對值|rsi(n)|,總共有105000(5000×21)個|rsi(n)|。(7)在輸入電文200ns的時間分辨率和載波頻率為1kHz分辨率的條件下,|rsi(n)|最大值中的第n位和第i個載波頻率芯給出了C/A碼的初始點。目前三十五頁\總數一百二十四頁\編于十三點以上的操作可由圖5-5說明。圖5-5所示結果是時域中的,且只給出21個本地碼的其中一個??烧J為輸入電文與本地電文位于兩個圓柱體表面,為了去匹配輸入電文,本地碼要旋轉5000次。換句話說,一個圓柱體相對于另一個圓柱體旋轉5000次。在每一步,5000個輸入電文與5000個本地電文點對點相乘,相乘結果加到一起。包含本地碼與輸入碼所有可能的乘積需5000步,乘積中最高幅值將被記錄下。最高幅值如果同時大于預置門限值的話,就是我們的期望值。
目前三十六頁\總數一百二十四頁\編于十三點圖5-5循環(huán)相關捕獲示意圖
目前三十七頁\總數一百二十四頁\編于十三點
3.循環(huán)相關捕獲的改進方法循環(huán)相關捕獲的改進方法與上面介紹的捕獲方法的惟一區(qū)別就是傅立葉變換FFT的長度減小了一半。上一節(jié)的循環(huán)相關方法的第(3)步產生本地碼lsi(n),由于lsi(n)是復量,故其頻譜是不對稱的,如圖5-6所示。目前三十八頁\總數一百二十四頁\編于十三點圖5-6本地產生信號頻譜圖
目前三十九頁\總數一百二十四頁\編于十三點從圖5-6中顯而易見,其信息包含在前半頻譜圖中,后半部分只含有非常少量的信息,從而,循環(huán)相關的捕獲方法可以做如下修改:(1)對1ms的輸入電文x(n)進行快速傅立葉變換FFT,將輸入轉換到頻域,值為X(k),這里,n=k=0,1,2,…,4999。(2)取X(k)的前2500(k=0,1,2,…,4999)個值的復共軛,值為X(k)*。(3)利用式(5-6),產生21個本地碼lsi(n)(i=1,2,…,21),每個lsi(n)有5000個數據點。目前四十頁\總數一百二十四頁\編于十三點(4)對lsi(n)進行FFT,變換到頻域中,值為Lsi(k)。(5)Lsi(k)的后半部只含有少量信息,因此,取前半部分的Lsi(k),與X(k)*點對點相乘,結果為Rsi(k)(k=0,1,2,…,4999)。(6)對Rsi(k)進行反傅立葉變換,變換到時域中的值為rsi(n),并求出其絕對值|rsi(n)|,總共有52500(2500×21)個|rsi(n)|。目前四十一頁\總數一百二十四頁\編于十三點(7)|rsi(n)|的最大值如果大于預置門限值的話就是我們的期望值。第i個頻率就是分辨率1kHz的載波頻率,第n位就是分辨率400ns的C/A碼的初始點。(8)由于這種方法尋找C/A碼起始點的時間分辨率是400ns,可以通過比較第n位的幅值與(n-1)和(n+1)位幅值,將分辨率提高到200ns。該方法中,從第(5)步到第(7)步,只有2500個數據點的操作,而非5000個。第(7)步挑選最大幅值的過程由于只用到一半的輸出而簡化了。因此這種方法節(jié)省了操作時間。仿真結果表明,這種方法的信噪比略低于常規(guī)循環(huán)相關捕獲方法1.1dB,這可能是由于丟棄頻域內后半部分信號引起的。目前四十二頁\總數一百二十四頁\編于十三點5.4.3延遲與累積捕獲方法基于延遲與累積的捕獲方法是為了去除輸入信號中的頻率信息。去除了頻率信息,只需用本地C/A產生碼去尋找輸入信號C/A碼的起始點,一旦找到其起始點,就可由FFT或DFT得到其頻率。從理論角度看,這是個非常吸引人的方法,然而,運用到實際中處理GPS信號,還需進一步研究。這種方法討論如下。
首先,我們假定輸入信號s(t)是復量,因此表示為:
(5-18)
目前四十三頁\總數一百二十四頁\編于十三點這里,Cs(t)表示衛(wèi)星s的C/A碼。
輸入信號的延遲表達式為:
(5-19)
τ表示延遲時間,s(t)與延遲表達式的復共軛的乘積為:
(5-20)這里的
(5-21)目前四十四頁\總數一百二十四頁\編于十三點戈爾德碼(GoldCode)與其延遲的乘積可以看做是一個“新碼”。這個“新碼”也屬于戈爾德碼家族。仿真結果表明,利用其自相關和交叉相關可找到“新碼”的起始點?!靶麓a”的起始點與C/A碼的起始點相同。式(5-20)有意思的地方在于它的頻率自變性,即頻率變化不受其他變量支配,因為f和t都是常量,因而ej2πfτ項是常量,因此,只需搜索“新碼”的起始點。盡管這種方法非常吸引人,但它要求輸入信號必須是復量,由于收集到的輸入電文都是實數,因而必須將它們轉化成復數。目前四十五頁\總數一百二十四頁\編于十三點為避免將實數信號轉化成復數信號的額外計算,
我們可以采用如下方法。
輸入信號為
這里,Cs(t)表示衛(wèi)星s的C/A碼。輸入信號的延遲表達式為:
(5-23)s(t)與延遲s(t-τ)的乘積是:(5-24)目前四十六頁\總數一百二十四頁\編于十三點
Cn(t)是式(5-21)的定義。式(5-24)含有兩項:一個直流項和一個高頻項。通常,可以濾去高頻。為使式(5-24)可用,|cos(2πfτ)|必須接近單位1。理論上,很難做到這點,因為頻率f未知,然而,由于頻率在1250±10kHz之內,選擇一個延遲時間來滿足這個條件是完全可能的。例如,可選擇2×π×1250×103τ=π,如此τ=0.4×10-6s=400ns。輸入電文用5MHz數字化,采樣時間是200ns(1/5MHz)。在這個條件下,|cos(2πfτ)|=|cos(π)|=1。如果頻率偏離10kHz,其相關值|cos(2πfτ)|=|cos(2π×1260×103×400×10-6)|=0.9997,非常接近單位1。目前四十七頁\總數一百二十四頁\編于十三點因此這個方法可以應用到實際電文中,惟一的約束是不可以像式(5-20)中那樣任意選擇延遲時間,但可以選擇延遲不是很長的0.4μs的倍數,例如τ=1.6μs,當頻率偏移±10kHz時,|cos(2πfτ)|=0.995??梢钥闯?,如果對中心頻率1250kHz用一個長延遲的話,|cos(2πfτ)|會下降很快。如果延遲過長,|cos(2πfτ)|可能不再接近1。這個方法的問題是當兩個帶噪聲的信號相乘時,噪底會上升,搜索1ms的電文將捕獲不到某個衛(wèi)星。目前四十八頁\總數一百二十四頁\編于十三點圖5-7相位偏移對延遲和累積捕獲方法的影響(a)無相位偏移;(b)相位偏移兩位
目前四十九頁\總數一百二十四頁\編于十三點5.4.4長記錄電文的相干處理]尋找弱信號的方法通常是增加捕獲的電文長度,這樣做的好處是提高了信噪比,對此的一個簡單解釋是,長2ms的電文的FFT產生500Hz的頻率分辨率,而1ms的電文的FFT產生1kHz的頻率分辨率。由于信號在頻譜展開后帶寬窄,因而信號強度并不會因為相對窄的頻率分辨率而降低,降低頻率分辨率帶寬反而將噪聲降低了一半,因此,信噪比上升了3dB。目前五十頁\總數一百二十四頁\編于十三點長記錄電文相干處理的思想是利用很少的數據點執(zhí)行快速傅立葉變換(FFT)。利用10ms的電文(或50000個數據點)來說明這個思想。電文的中心頻率是1.25MHz,輸入信號將被轉換成一個基帶信號和一個2.5MHz的高頻帶。如果將高頻帶用濾波器濾去,將只需處理基帶信號。假定此時已經濾去高頻信號,基帶信號是帶C/A碼的輸入的下變頻信號,將這個信號與C/A碼點對點相乘。如果到達了C/A碼的正確相位,輸出將變成連續(xù)信號,由多普勒效應引起的最大頻率范圍在±10kHz。既然這個信號的帶寬是20kHz,我們就可以用其2.5倍的頻率來采樣,即用50kHz采樣該信號。10ms的電文在此采樣頻率下只產生500個數據點。然而,我們是用5MHz采樣的,產生了50000個數據點。我們可以每100個數據點取一次平均值作為一個新的數據點,這個取均值的過程等價于一個低通濾波器,因此,它去除了乘法運算后的1.25MHz連續(xù)信號中的高頻分量,同樣,
也去除了接收機收集到的信號中含有的噪聲信號。
目前五十一頁\總數一百二十四頁\編于十三點這個方法可以用如下10ms的電文的例子來說明:(1)將10ms長的輸入信號與本地生成1.25MHz的復合連續(xù)信號相乘,并用5MHz采樣。因為輸出最大頻率是10kHz,我們可以將此時的輸出稱做低頻輸出。頻率近似為2.5MHz的高頻分量將被濾波除去,因而可以忽略它。這時,得到了50000個數據點。(2)將這些輸出數據與10個C/A碼點對點相乘,總共得到50000個數據點。(3)將每100個相鄰數據點取其均值,變成一個新的數據點,這個過程濾去了頻率近似為2.5MHz的高頻分量。
目前五十二頁\總數一百二十四頁\編于十三點(4)對新產生的500個數據點進行FFT變換,找到頻率內的最高輸出,這個操作產生的頻率輸出中,只有250個輸出有用。(5)將本地生長碼相對低頻輸出移動一個數據點,然后重復步驟(3)和(4)。由于每毫秒產生一次C/A碼,我們需要操作5000次,而非50000次。(6)在頻域中,總共得到1.250×106(250×5000)個輸出,大于預置門限值的最高幅值就是期望值,從這個值可以得到C/A碼的起始點和多普勒頻移。由此得到的頻率分辨率是100Hz。盡管上述方法簡單易懂,但循環(huán)相關的捕獲方法也可以用很少的操作來達到同樣的目的。
目前五十三頁\總數一百二十四頁\編于十三點5.4.5精頻估計的基本概念從1ms電文中得到的頻率分辨率大約是1kHz,對跟蹤環(huán)來說,這個值太粗糙了。適合跟蹤過程的頻率必須在幾十Hz之內。通常,跟蹤環(huán)的頻寬是幾Hz,用DFT(或FFT)計算精細頻率(FineFrequency)是不可取的。因為為了得到10Hz的分辨率,需100ms的電文記錄,如果每毫秒有5000個數據點,100ms就有500000個數據點,其FFT操作將是非常費時的。另外,100ms電文的相位偏移的概率也相對高。
目前五十四頁\總數一百二十四頁\編于十三點得到適合跟蹤環(huán)的精細頻率分辨率(FineFrequencyResolution)(以后簡稱精頻)的方法是通過相位關系。一旦輸入信號中剝離了C/A碼,輸入就將變成連續(xù)波形。如果在m時刻,1ms電文中最高頻率分量是Xm(k)(k表示輸入信號的頻率分量),則可由DFT輸出得到輸入信號的初始相位θm(k):
(5-25)目前五十五頁\總數一百二十四頁\編于十三點Im和Re分別表示虛部和實部。讓我們假定在m時刻之后很短時間的n時刻,1ms電文的DFT分量Xn(k)也是最強分量,因為輸入分量在很短時間內不會迅速變化。n時刻輸入信號的初始相位角和頻率分量k為:(5-26)這兩個相位角可用來計算精頻:
(5-27)目前五十六頁\總數一百二十四頁\編于十三點這個方程式給出了一個比從DFT得到的要精確得多的頻率分辨率。為了保持其值的惟一性,θn(k)-θm(k)的相位差必須小于2π。如果相位差是最大值2π,帶寬就是1/(n-m)。這里的(n-m)是兩組連續(xù)電文之間的延時。目前五十七頁\總數一百二十四頁\編于十三點5.4.6消除精頻測量中的不確定性盡管求解精頻的基本方法都是基于式(5-27),但是具體實現它,則有幾種略微相異的方法。如果每毫秒取DFT的第k個分量,頻率分辨率是1kHz,精頻測量的不確定寬度也是1kHz。在圖5-8(a)中,給出了5個頻率分量,它們之間相隔1kHz。如果輸入信號如圖5-8(b)所示落在了兩個頻率分量之間,由于系統(tǒng)中噪聲的影響,
將不能確定其相位。
目前五十八頁\總數一百二十四頁\編于十三點圖5-8頻域內的不確定區(qū)域(a)
頻率相離;(b)
輸入信號
目前五十九頁\總數一百二十四頁\編于十三點為了去除這種不確定性,有兩個解決方法。第一個方法是加速DFT操作過程。如果每0.5ms執(zhí)行一次DFT操作,不確定帶寬是2kHz。在頻率分辨率為1kHz和不確定帶寬為2kHz的條件下,確定一個精細頻率就不存在不確定的問題了。但是這種方法使DFT操作增加了一倍。解決這個問題的第二個方法是,如果輸入是連續(xù)信號的話,采用一種幅值比較方案,而非加快DFT操作速度。如圖5-8(b)所示,輸入信號落在兩個頻率槽之間。假定X(k)的幅值略高于X(k-1),將X(k)代入式(5-26)和式(5-27),得到精細分辨率。輸入頻率與X(k)的值相差接近500Hz。目前六十頁\總數一百二十四頁\編于十三點正確的結果是輸入頻率比X(k)低500Hz,由于噪聲的存在,我們可能錯誤地認定是輸入頻率比X(k)高了500Hz。然而,輸入頻率X(k)和X(k-1)是非常接近的,且它們比X(k-1)要強得多。因此,如果輸入最高頻率槽是X(k),且相位計算在不確定區(qū)域范圍內,這個區(qū)域接近于X(k)與X(k-1)的中心或者X(k)與X(k+1)的中心,這時就比較X(k-1)與X(k+1)兩者之間的相位。如果X(k-1)大于X(k+1),輸入頻率就是低于X(k)的;否則,就認為輸入頻率高于X(k)。如此,精頻的準確性由相位決定,但是頻率差值的符號由最高頻率分量鄰近的兩個頻率分量的幅值決定。目前六十一頁\總數一百二十四頁\編于十三點然而,問題比這要略為復雜一些,因為兩組連續(xù)數據間可能由于導航電文引起了180°的相位偏移。如果發(fā)生了這種情況,輸入信號就不能被看做連續(xù)信號對待了。這種可能性使不確定寬度延遲了1ms,且限制在250Hz。頻率相距±250Hz對應的相位角是±π/2。如果頻率相距+250Hz,相位角是+π/2,然而導航電文引起的相位偏移π將使相位角變成+π/2(+π/2-π),相應地引起-250kHz的頻率變換。如果在尋找精頻時不考慮相位偏移,這個結果將變成500kHz。目前六十二頁\總數一百二十四頁\編于十三點為了避免這個問題,頻率不確定的最大值必須小于250Hz。如果頻率最大相差是±200Hz(這個值是實驗選取的),則相應的相位角的差是±2π/5,如圖5-9所示。如果存在相位偏移π,相位差了3π/5(|±(2π/5)π|),這個值要比2π/5大得多。這樣來看,相位差可以用來確定精頻而不產生錯誤的頻率偏移。如果相位差大于2π/5,就從結果中減去π以保證頻率差小于2π/5。為了保持頻率在200kHz之內,X(k)中的k值之間的最大距離將是400kHz。如果輸入是在兩個鄰近的k值當中,則輸入信號跟兩邊的k值都相距200kHz。目前六十三頁\總數一百二十四頁\編于十三點圖5-9相位差小于2π/5將不會造成頻率誤差
目前六十四頁\總數一百二十四頁\編于十三點圖5-10從兩個相位角得到的角度差
目前六十五頁\總數一百二十四頁\編于十三點討論的最后一點是將X(k)的實部和虛部轉化成相位角。通常,相位角的范圍在±π之間。式(5-26)和式(5-27)中的兩個相位角都將用這種方式得到,兩個相位角的角度差可以是0~2π間的任何值,如圖5-10所示。由于200kHz允許的最大相位角差是2π/5,這兩個相位角的角度差必須等于或小于2π/5。如果結果大于2π/5,可以從結果中加上或減去2π,其絕對值就肯定小于2π/5了。如果將噪聲考慮進去,2π/5門限值可以適當放寬,如用2.3π/5,意味著其差必須等于或小于2.3π/5這個值。如果這樣處理后的值仍然大于這個門限值,就意味著兩個連續(xù)毫秒數據間有相位偏移了,必須從結果中減去π。當然,得到的角度值也還要經過加減2π,以保證最后得到的值小于門限值。目前六十六頁\總數一百二十四頁\編于十三點由以上討論可知,在某一確定衛(wèi)星中需要經過下面幾個步驟來找出它的C/A碼起始點和載波頻率:(1)對1ms的輸入執(zhí)行循環(huán)相關操作,某個確定的C/A碼起始點可以從這些循環(huán)相關里找到,載波頻率可以以1kHz的分辨率得到。(2)找到最高頻率分量X(k),在同一個毫秒數據內的兩個分量,一個比X(k)中的k值低400kHz,一個比k值高400kHz,對這兩個分量執(zhí)行DFT操作。三個輸出[X(k-1),X(k),X(k+1)]中的最高輸出將被指定為新的X(k),并用這個新的X(k)作為DFT分量來求解精頻。目前六十七頁\總數一百二十四頁\編于十三點(3)從C/A碼起始點處開始選擇連續(xù)幾個毫秒的數據,我們隨意選擇為5ms,將這些數據與5組連續(xù)C/A碼相乘,結果肯定是一個5ms長的連續(xù)信號。但是在任意1ms數據中,都有可能含有一個π相位偏移。(4)從所有輸入數據中找出Xn(k),其中n=1,2,3,4,5,然后由式(5-25)找出相位角。角度差值定位為:(5-28)目前六十八頁\總數一百二十四頁\編于十三點(5)角度差的絕對值必須小于門限值(2.3π/5),如果不能實現,就要從Δθ上加上或減去2π。如果結果仍然大于門限值,就要調整π相位偏移,在Δθ上加上或減去π,得到的值還要與門限值2.3π/5進行比較,來決定是否要再次加減2π。經過這些調整后,最終的角度值就是期望值。(6)式(5-27)用來計算精頻。由于有5ms的數據,將得到4個精頻值。為了提高精確度,我們將這4個精頻的平均值作為要求解的值。
目前六十九頁\總數一百二十四頁\編于十三點5.5Matlab與Simulink仿真簡介
5.5.1仿真工具簡介Matlab是由美國Mathsworks公司開發(fā)的大型軟件。在Matlab軟件中,包括了兩大部分:數學計算和工程仿真。其數學計算部分提供了強大的矩陣處理和繪圖功能。在工程仿真方面,Matlab提供的軟件幾乎遍布各個工程領域,并且不斷加以完善,現已成為國際上最為流行的科學計算與工程計算軟件之一。目前七十頁\總數一百二十四頁\編于十三點5.5.2Simulink的使用本小節(jié)將利用BPSK傳輸作為例子對Simulink進行簡單介紹。但是,我們只局限在Simulink的原理及在這個仿真輔導中所要求的特點上,至于更為詳盡的內容,建議讀者參考Simulink手冊。這里給出的Windows界面的圖保持了原樣。Simulink是Matlab軟件的擴展,它是實現動態(tài)建模和仿真的一個軟件包。它與Matlab語言的主要區(qū)別在于,它與用戶接口是基于Windows的模型化圖形輸入的,從而使得用戶可以把更多的精力投入到系統(tǒng)模型的構建而非語言的編程上。
目前七十一頁\總數一百二十四頁\編于十三點圖5-11SimulinkLibraryBrowser窗口
目前七十二頁\總數一百二十四頁\編于十三點圖5-12BPSK傳輸的Simulink模型
目前七十三頁\總數一百二十四頁\編于十三點為了創(chuàng)建一個新的Simulink模型,可以通過File→New→Model菜單打開一個新的模型。某個庫模塊可以從庫窗口簡單地拖放到Simulink模型窗口中。利用UniformRandomNumberGenerator模塊以及隨后的Sign模塊,可以做圖5-12中的二進制信號源。UniformRandomNumber模塊在指定的區(qū)間上產生均勻分布的隨機數,在本例中該隨機數在[-1,+1]內產生。跟在其后的Sign模塊的輸出是:當輸入大于0時輸出為-1。為了產生輸出比特為等概率的+1和-1二進制信號源,可以加入LookupTable模塊,它的輸入—輸出映射關系為:+1到+1,-1到-1,而0到+1。為了將模塊UniformRandomNumber加到模塊中,可以在SimulinkBlockLibraryBrowser中雙擊模塊Sources庫(見圖5-13)。將模塊UniformRandomNumber拖入Simulink模型并雙擊它。目前七十四頁\總數一百二十四頁\編于十三點圖5-13Sources庫
目前七十五頁\總數一百二十四頁\編于十三點打開的BlockParameters窗口如圖5-14所示,在這個窗口中即可輸入如該圖所示的有關參數?,F將MathOperations庫中的Sign模塊拖入模型。利用鼠標將模塊UniformRandomNumber和Sign連接起來:在模塊UniformRandomNumber的輸出上按下鼠標左鍵并拖到Sign模塊的輸入端,然后釋放鼠標鍵。LookupTable模塊從LookupTables庫中得到,在模型中雙擊LookupTable模塊并輸入如圖5-15所示的模塊參數。
目前七十六頁\總數一百二十四頁\編于十三點圖5-14模塊參數:UniformRandomNumber目前七十七頁\總數一百二十四頁\編于十三點圖5-15模塊參數:LookupTable目前七十八頁\總數一百二十四頁\編于十三點在開始仿真之前,為了觀察源信號,必須調整ConfigurationParameters。在菜單欄中使用命令Simulation→ConfigurationParameters。即可打開如圖5-16所示的ConfigurationParameters窗口。就目前而言,僅涉及參數Starttime和Endtime,稍后為了求得準確的結果,可能需要調整用于數值積分的Maxstepsize和Minstepsize。在菜單欄中使用命令Simulation→Start啟動仿真。類似地,可以使用Simulation→Stop命令結束或停止仿真。為了觀察信號,
雙擊Scope即可打開如圖5-17所示的窗口。
目前七十九頁\總數一百二十四頁\編于十三點圖5-16仿真參數窗口
目前八十頁\總數一百二十四頁\編于十三點圖5-17源信號(Scope)目前八十一頁\總數一百二十四頁\編于十三點在窗口中單擊鼠標右鍵會打開一個彈出菜單,通過該菜單可以打開Axesproperties窗口,如圖5-18所示,這是為了設定y軸的范圍。
圖5-18Axesproperties窗口(Scope)
目前八十二頁\總數一百二十四頁\編于十三點在圖5-17中,Scope窗口的時間范圍可以通過菜單欄中的Parameters框來改變(見圖5-19)。
圖5-19Scope的參數窗口
目前八十三頁\總數一百二十四頁\編于十三點圖5-12中的其他模塊也能用相同的方式包括在內。利用UserDefinedFunctions模塊可以產生載波cos(4*pi*u),該模塊將某個指定的表達式(如cos(u))加到輸入變量u上。將模塊Fcn拖入仿真模型并雙擊它,會立即打開BlockParameters窗口,如圖5-20所示,在這里可以輸入表達式cos(4*pi*u)。目前八十四頁\總數一百二十四頁\編于十三點圖5-20模塊參數:Fcn目前八十五頁\總數一百二十四頁\編于十三點時間變量u可以從Sources庫中的Clock模塊得到。MathOperations庫中的Product模塊用來產生已調信號。由于考慮的是無噪聲傳輸仿真,因此就將發(fā)送端和接收端直接相連。接收端的匹配濾波器是利用Continuous庫中的Integrator模塊按積分清除來實現的。復位信號由Sources庫中的PulseGenerator模塊產生,其參數如圖5-21所示。最后的仿真結果如圖5-22所示。
目前八十六頁\總數一百二十四頁\編于十三點圖5-21模塊參數:PulseGenerator目前八十七頁\總數一百二十四頁\編于十三點圖5-22宿信號(Scope8)
目前八十八頁\總數一百二十四頁\編于十三點5.6GPS衛(wèi)星信號捕獲的例子
程序中所用到的輸入電文在時域內的情形如圖5-23所示。輸入信號看起來像噪聲,其頻率描繪可通過FFT求得,如圖5-24所示。正如預料的,FFT變換后帶寬是2.5MHz,其頻譜形狀與射頻鏈的濾波器形狀相似,通過循環(huán)相關后如圖5-25所示,其中給出了6號衛(wèi)星的C/A碼起始點,其起始點在2884。圖5-26給出了相距1kHz的21個頻率分量,最高值發(fā)生在k=7處。從圖5-25和圖5-26我們可以輕易地看出C/A碼的起始點和頻率。由于輸入電文是實際收集到的數據,精頻的精確度就難以測定,因為其多普勒頻率未知。精頻還取決于在下變頻中用到的本地振蕩器的頻率精確性和采樣頻率的精確性。
目前八十九頁\總數一百二十四頁\編于十三點圖5-235000個輸入數據點
目前九十頁\總數一百二十四頁\編于十三點圖5-24輸入信號的快速傅立葉變換
目前九十一頁\總數一百二十四頁\編于十三點圖5-256號衛(wèi)星的C/A碼起始點
目前九十二頁\總數一百二十四頁\編于十三點圖5-26衛(wèi)星6的展開的各個頻率分量
目前九十三頁\總數一百二十四頁\編于十三點感知計算精頻準確性的一個方法是利用數據的不同部分。從輸入電文的不同部分計算出六個精頻,用到的電文部分是:1~25000,5001~30001,10001~35001,15001~40001,20001~45001,25001~50001。這些電文都是5ms長,且起始點偏離1ms,在相鄰兩組間,有4/5的數據相同。因此,得到的五個精頻是非常接近的,這六個精頻之間相差是-2.4,9.0,-8.2,5.4和2.3Hz。數據都是從固定的接收機上收集到的,因此,每毫秒刷新一次頻率的變化是非常小的。從而,這些頻差可以看做是捕獲方法中的誤差。當信號長度改變時,精頻的差也跟著變化,對一個弱信號來說,如果使用相同的捕獲方法,其精頻可相差幾十赫茲。目前九十四頁\總數一百二十四頁\編于十三點對弱信號(24號衛(wèi)星)執(zhí)行捕獲,如圖5-27和圖5-28所示。從圖中我們很難判斷C/A碼的起始點和頻率是否為正確值,需要通過另外的相關運算才能找出它們,它的正確值與我們在圖5-27和圖5-28中看到的不同。
目前九十五頁\總數一百二十四頁\編于十三點圖5-2724號衛(wèi)星的C/A碼起始點
目前九十六頁\總數一百二十四頁\編于十三點圖5-2824號衛(wèi)星的展開信號的頻率分量
目前九十七頁\總數一百二十四頁\編于十三點5.7關于捕獲的一些子程序
5.7.1隨機編碼過程仿真打開Matlab,新建一個MFile,輸入以下的文本,保存為GenerateCode.m,并調試運行??梢詥尾交蚨嗖竭\行M文件。%該程序仿真產生三組偽隨機數,模擬隨機編碼過程closeall;clear;clc;t=0:5:1000; %時間變量為1s,步長5ms%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%目前九十八頁\總數一百二十四頁\編于十三點x1=rand(1,length(t));%生成一組1*length(t)維的偽隨機數x1=round(x1); %將x1數組中的元素轉換到與其最近的整數index1=find(x1==0);%找出x1數組中為0的元素x1(index1)=-ones(1,length(index1));%返回一個index1長度的一維數組x2=rand(1,length(t));x2=round(x2);index1=find(x2==0);x2(index1)=-ones(1,length(index1));x3=rand(1,length(t));x3=round(x3);index1=find(x3==0);x3(index1)=-ones(1,length(index1));目前九十九頁\總數一百二十四頁\編于十三點y1=zeros(1,1);y2=zeros(1,1);y3=zeros(1,1);%生成三個1*1的零矩陣,存放偽隨機值t1=zeros(1,1);t2=zeros(1,1);t3=zeros(1,1);%生成三個1*1的零矩陣,存放時間值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%將生成的偽隨機值存放到對應的矩陣中%%%%%%y1(1)=x1(1);y2(1)=x2(1);y3(1)=x3(1);t1(1)=t(1);t2(1)=t(1);t3(1)=t(1);k=2;m=2;n=2;fori=2:length(t)if(x1(i)==x1(i-1))y1(k)=x1(i);t1(k)=t(i);k=k+1;目前一百頁\總數一百二十四頁\編于十三點elsey1(k)=x1(i-1);y1(k+1)=x1(i);t1(k)=t(i);t1(k+1)=t(i)+0.01;%如果該時刻階躍變化,則右移0.01來記錄k=k+2;endif(x2(i)==x2(i-1))y2(m)=x2(i);t2(m)=t(i);m=m+1;elsey2(m)=x2(i-1);y2(m+1)=x2(i);t2(m)=t(i);t2(m+1)=t(i)+0.01;目前一百零一頁\總數一百二十四頁\編于十三點m=m+2;endif(x3(i)==x3(i-1))y3(n)=x3(i);t3(n)=t(i);n=n+1;elsey3(n)=x3(i-1);y3(n+1)=x3(i);t3(n)=t(i);t3(n+1)=t(i)+0.01;n=n+2;endend目前一百零二頁\總數一百二十四頁\編于十三點%%%%%%畫圖說明產生的三組偽隨機碼%%%%%subplot(3,1,1);plot(t1,y1,′y′);gridon;axis([-1,1001,-1.5,1.5]);subplot(3,1,2);plot(t2,y2,′y′);gridon;axis([-1,1001,-1.5,1.5]);subplot(3,1,3);plot(t3,y3,′y′);gridon;axis([-1,1001,-1.5,1.5]);目前一百零三頁\總數一百二十四頁\編于十三點whitebg(′black′);%將三組偽隨機值存放到新矩陣并傳送到Workspace中,方便以后調用數據%simin1=[t1;y1]′;simin2=[t2;y2]′;simin3=[t3;y3]′;目前一百零四頁\總數一百二十四頁\編于十三點輸入上面的文本后,運行得到如圖5-29所示的偽隨機碼。其結果還可以通過Workspace查看,之所以要傳送到Workspace中,
是因為我們在后面的仿真中還要用到這些偽隨機碼。
目前一百零五頁\總數一百二十四頁\編于十三點圖5.29模擬三組偽隨機碼的仿真示意圖
目前一百零六頁\總數一百二十四頁\編于十三點5.7.2獲取導航信息的仿真在這個仿真中,我們要得到衛(wèi)星的導航信息,其中忽略了頻率偏移,且衛(wèi)星信號的數據是基于前面章節(jié)中得到的衛(wèi)星數據,存放在GPSsignal.mat文件中。在運行程序之前,我們必須將GPSsignal.mat中的數據傳送到Workspace中。
目前一百零七頁\總數一百二十四頁\編于十三點clear;%清除所有的變量clc;%關閉所有指令窗closeall;%關閉所有未隱藏的窗口loadGPSsignal.mat%從GPSsignal.mat中獲得所有變量到Workspace中 %n=length(GPSsignal);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SvNum=12;%調用fGenerateCAcode3.m文件,獲得衛(wèi)星編號為12的C/A碼Temp=fGenerateCAcode3(SvNum);index1=find(Temp==0);%找出C/A碼中的低電平,形成列向量存放在index1中Temp(index1)=-ones(1,length(index1));%返回一個與index1相同長度的一維數組
目前一百零八頁\總數一百二十四頁\編于十三點SinWave=sin([0:2*pi/8:2*pi*7/8]);%產生一個步進2*pi/8的正弦波SinWave=single(SinWave);%將SinWave矩陣轉換成單精度矩陣GpsMatch=zeros(1,1);%生成一個1*1的零矩陣SinWave=[SinWaveSinWaveSinWaveSinWaveSinWave];GPSsignal.mat %生成一個5ms的連續(xù)信號fori=1:length(Temp)GpsMatch=[GpsMatchTemp(1,i)*SinWave];endGpsMatch=GpsMatch(2:length(GpsMatch));%生成本地匹配信號并去掉第一個元素n=length(GpsMatch);m=50000;fori=1:mRes(i)=GpsMatch*GPSsignal(1,i:i+n-1)′;%將本地生成匹配信號GpsMatch與GPSsignal循環(huán)卷積
目前一百零九頁\總數一百二十四頁\編于十三點endplot(1:m,Res);%圖示卷積的幅值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Res2=abs(Res);fori=1:100%該循環(huán)目的是找出Res中的最大值[CI]=max(Res2);Res2(1,I)=0;Index(1,i)=I;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%下面是要找到GPSsignal中的導航電文%
目前一百一十頁\總數一百二十四頁\編于十三點%方法是檢驗GPSsignal(已被C/Acode調制過)的每個最大值處是否具有相位偏移%w=length(GpsMatch);m=1;fori=Index(1,1):w:(length(GPSsignal)-w+1)NavigationBit(m)=(GPSsignal(i:i+w-1)*GpsMatch′)/w;m=m+1;endNavigationCode=zeros(1,1);NavigationCode(1,1)=NavigationBit(1,1);m=2;Count=0;fori=2:length(NavigationBit)if(NavigationBit(1,i)~=NavigationBit(1,i-1))NavigationCode(1,m)=NavigationBit(1,i);目前一百一十一頁\總數一百二十四頁\編于十三點 m=m+1;Count=0;elseCount=Count+1;if(Count>=5)NavigationCode(1,m)=NavigationBit(1,i);m=m+1;Count=0;endendend目前一百一十二頁\總數一百二十四頁\編于十三點%%%%%我們已得到導航碼NavigationCode,下面將它轉化成數字%%%%NavigationCode=NavigationCode./abs(NavigationCode);index1=find(NavigationCode<0);NavigationCode(index1)=zeros(1,length(index1));Table1=[0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;目前一百一十三頁\總數一百二十四頁\編于十三點1011;1100;1101;1110;1111;];Result=″;fori=1:4:length(NavigationCode)TT=NavigationCode(i:i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年標準工程施工總包協議條款版
- 2024年度預制混凝土構件產業(yè)鏈金融合作合同范本3篇
- 2024年旅游租車服務協議讓您旅途更輕松
- 猜拳java課程設計
- 工程內業(yè)資料員工作總結(14篇)
- 2024年土地征收及土地租賃合同范本3篇
- 總經理發(fā)言稿
- 激光課程設計論文
- 市場方案集錦九篇
- 2025年山東淄博市張店區(qū)“服務基層人才專項”招募187人管理單位筆試遴選500模擬題附帶答案詳解
- 課件 軍人職責
- Unit 5 Fun ClubsSectionA1a-1d說課稿2024-2025學年人教版英語七年級上冊
- 2025蛇年元旦晚會
- 電工的職業(yè)健康培訓
- 2024年中國船舶涂料市場調查研究報告
- 竣工驗收備案表-昆明市
- 2024年湖南省衡陽市人民檢察院招聘21人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 企業(yè)所得稅收入確認
- 礦產資源總體規(guī)劃工作計劃
- 2025年高考化學一輪復習策略講座
- 期末 (試題) -2024-2025學年教科版(廣州)英語四年級上冊
評論
0/150
提交評論