【WSN同步捕获】无线传感器网络的同步捕获和跟踪误差的MATLAB仿真
0.完整源碼獲得方式
方式1:微信或者QQ聯系博主
方式2:訂閱MATLAB/FPGA教程,免費獲得教程案例以及任意2份完整源碼
1.軟件版本
matlab2013b
2.本算法理論知識
由于無線傳感器網絡的特殊性,所以要盡量的延長標簽節點的壽命,降低功耗,同時要求標簽接受機的復雜度要小。
要求在原有的單步捕獲算法和兩步捕獲算法基礎上,進行改進創新,新的算法在標簽接收機復雜度較小的條件下,最終達到進一步降低標簽節點反饋次數和捕獲時長,使標簽節點功耗降低的目的。
通過論文的分析可知,論文中的基礎算法為單步捕獲算法,其改進之處在于單步捕獲算法基礎之上的雙步捕獲算法,從而解決了捕獲時長和精度的問題。
這里,我的改進出發點是分析單步的缺陷,雙步的缺陷,從節點損耗,捕獲時間長度以及捕獲精度三個方面考慮算法的改進。
算法創新方案:
通過論文中的分析可知,單步捕獲算法和雙步捕獲算法的優缺點如下:
| 單步捕獲 | 雙步捕獲 | ||
| 優點 | 缺點 | 優點 | 缺點 |
| 算法簡單 | 只適用于低精度同步 | 滿足高精度捕獲需求 | 一定程度上增加了節點功耗(Pd概率值較小的情況) |
| 一次完成同步 | 高精度同步時延大 | 高精度同步時延較小 | |
| 節點功耗較低 | |||
通過分析可知,由于雙步捕獲算法,需要增加反饋次數,會在一定程度上增加節點的功耗,因此,考慮節點損耗因素,需要設計一種算法,在滿足低時延,高精度的前提下,不增加節點損耗的算法,就是我們這個算法的主要目標。
考慮低時延,高精度這兩個因素,本算法還是考慮引入兩步捕獲算法;
考慮低功耗因素,本算法主要從如下幾個方面考慮:
由于,信息傳輸和計算會消耗大量的能量,無線傳感器網絡中的節點都是由電池供電,能源有限,讓節點長時間持續時間同步過程以達到極高精確度的時鐘同步將導致極大的損耗,
節點持續進行時鐘同步對能量有限的無線傳感器網絡來說是一種巨大的浪費。
因此,在實際中,需要對節點的同步精度進行規劃,此外,為了降低每個節點的反饋次數,可以考慮多節點協作的反饋方式。
本算法的基本結構框圖如下所示:
對于原算法,主機和目標節點的反饋是基于1對1的方式,即對于任何一個節點,需要進行同步,那么需要通過主機和節點之間進行反饋運算:
每個1對1的主機節點網絡的運輸滿足如下的結構(來自論文資料)
即,每個節點需要做相位估計和反饋操作。為了進一步降低每個節點損耗,需要降低每個節點的運算量,那么我們采取如下的網絡結構進行。
??? 即節點將相位估計的結果,以最小的功率發送到相鄰節點,再由相鄰節點發送給主機,這樣,對于節點1,其在同一時間段內,只需要使用相位估計和短距離發送的功率,從而大大降低了單個節點的使用壽命。
更進一步可以采用如下的方式:
采用這種方式,可以大大降低發送功率,但是采用這種方式,需要在主機端設計多對一的接收機制,需要引入波速成形等技術。
通過上述的思想,可以降低單個節點損耗,從而延長了單個節點的使用壽命。
而采用多個相鄰節點組合的方式,更進一步降低了發送節點的功耗,在接收端只要通過接收n個節點的信息來提取目標節點1的相位估計值。
3.核心代碼
clc; clear; close all; warning off;%鋸齒波環路結構搭建 KK = 20; %窄脈沖分段精度 T = KK; %捕獲積分寬度,單位:信號周期數 Tao = T/KK; % 窄脈沖寬度設置為T/KK Ts = -49:50;Kd = 1/max(Ts); %假設環路增益為1 Theta1= -12; %設置主機的相位值(主機相位依次由最小值->最大值) Theta2= -11; %設置標簽節點的相位值%定義主機發送的窄脈沖函數 gt = func_gt(Theta1,Ts,Tao);%窄脈沖函數 figure; stem(Ts,gt);title('主機發送的窄脈沖'); xlabel('主機發送的相位值'); ylabel('窄脈沖');%定義標簽節點的鋸齒波信號 S = func_S(Theta2,Ts,Kd); figure; plot(Ts,S,'LineWidth',4);title('鋸齒波'); xlabel('標簽節點的相位值'); ylabel('鋸齒波');%捕獲過程的基本原理的仿真 %主機端發送相位為theta1的窄帶脈沖 gt; %標簽節點產生相位為theta2的窄帶脈沖 S; %窄帶脈沖和標簽節點做相關運算 % R = xcorr(gt,S,'biased'); R = zeros(1,length(Ts));for i = 1 : length(Ts)R(i) = gt(i)*S(i); end Vcor = R/Tao; figure; stem(Ts,Vcor);title('計算得到相關值'); diff_theta = Vcor/Kd; diff_theta = diff_theta(diff_theta~=0) diff_theta = diff_theta - max(Ts)if diff_theta == Theta1 - Theta2disp('捕獲成功'); elsedisp('正在捕獲過程中'); end4.操作步驟與仿真結論
分別運行main01~main05?
這個部分的代碼主要設計了相位可調的窄脈沖和相位可調的鋸齒波,以及在理想環境下的捕獲仿真,仿真的結果如下所示:
主機端發送的窄脈沖:
本地節點的鋸齒波:
??? 窄脈沖和鋸齒波的相關結果:
???? 系統最后的仿真結果:
實際在參數預先設置的時候相位差為-1,這說明捕獲成果。
其中,代碼中
這個是參數可調窄脈沖,三個參數分別為相位值,積分長度,窄脈沖寬度。
這個是參數可調鋸齒波,三個參數分別為相位值,積分長度,環路增益(鋸齒波斜率)。
??? 這個部分,主要將該模塊用于實際環境,加入噪聲進行仿真,并分析捕獲誤差。
主機通過無線發送到節點的時候,往往會受到噪聲的干擾,因此,本地接收到的窄脈沖為:
上面兩圖是不同噪聲下,標簽節點接收到的窄脈沖信號。
然后進行相關,我們可以得到如下的結果:
此信號為誤差曲線,即在不同的噪聲下捕獲到的相位和實際的相位的誤差。從仿真結果可知,當SNR為6的時候,誤差接近0.
通過設置門限進行反饋判決,門限的大小根據具體的精度要求進行。
捕獲階段可將門限設置大點,而根據階段可將門限設置小點。。。
??? 仿真結果如下所示:
???
這個依然是窄脈沖和鋸齒波。
捕獲誤差。
相位捕獲過程。
跟蹤誤差,只要在設定的門限內,就進入跟蹤狀態。
??? 這個部分和論文中的相似,代碼和你提供的相似,主要是考慮鋸齒波的反饋延遲進行設計的,具體的理論,這里就不多做介紹了,主要參考最早的參考論文。
反饋次數為:
這個是理論和實際的反饋次數及捕獲時長的仿真對比圖。
???? 這個部分是采用本文的算法和論文中所說的一步兩步算法的性能對比仿真。
由此可知,本文的算法具有明顯的優勢。
5.參考文獻
[1]莊祎夢. 無線傳感器網絡時間同步算法研究與實現[D]. 上海交通大學.
A12-04
總結
以上是生活随笔為你收集整理的【WSN同步捕获】无线传感器网络的同步捕获和跟踪误差的MATLAB仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【迫零准则】基于迫零准则的自适应线性均衡
- 下一篇: 【Kmeans】基于Kmeans的聚类算