1.理論基礎
CSI(Channel State Information):信道狀態信息(物理層);
CSI是CFR的采樣版本,無線信道常常用信道沖擊響應(Channel Impulse Response,CIR)建模。CIR可以表示為:
其中q為第/條多徑分量的幅度袞減,0為第/條多徑分量的相位偏移而I為第/條 多徑分量的時間延遲。iV為多徑分量的總數。5〇〇為Dirac脈沖函數。在頻域上, 多徑傳播在頻域上表現為頻率選擇性袞落,因此也可以通過將CIR進行傅里葉變 換得到的信道頻率響應(ChannelFrequencyResponse,CFR)刻畫多徑傳播,CIR和CFR可以用來詮釋多徑響應,遂也可被應用於描述信道。
一般來說,當我們需要准確的測量CIR及CFR時,一般需要專業的儀器來進行處理,但D.Halperin通過對固件進行修改,使一般商用WIFI設備上也能以CSI的方式獲取一個采樣版本的CFR,這些CSI數據釆自於無線網卡得到的接收數據包中,每組CSI包含了一個OFDM f載波的幅度信息和相位信息:
在WiFi網絡中,信號通過OFDM調制的方式進行傳播,每個信號都是通過多個子載波進行傳 輸,CS1表征了發射機和接收機之間的通信鏈路的特性,它不僅體現無線信號在發射機和接收機之間傳 播過程中的衰減情況,還反映了信號在傳輸過程中遇到的散射和折射等情況。在頻域空間中,信道狀態 信息通過幅度和相位進行描述 。
2.執行內容
clc,clear csi_trace = read_bf_file('C:\Users\默黨\Desktop\1\matlab\data\static_4.dat'); global x global m m=3; x=100;% x是一個全局變量,表示數據包個數 for L=1:x %取100個數據包的數據 csia=get_scaled_csi(csi_trace{L}); for i=1:1 %1個發射天線 for j=1:3 %3個接收天線 for k=1:30 %30個子載波數據 B(i,j,k)=csia(i,j,k);%收集數據 temp1(i,j,k) = 0; if k>m||k==m double sum; sum = 0; for p=1:m temp1(i,j,k) = temp1(i,j,k)+p*csia(i,j,k-m+1); sum = p + sum; end B(i,j,k) = 1/sum*temp1(i,j,k); end end end end temp=db(abs(squeeze(B).'));%暫存,用於將數據降維收成一個數組 sample(L,:)=temp(:,3)';%選取其中一列 end %Y1 = hampel(sample,2,1.4); Y2 = medfilt2(sample); %plot(sample)%輸出 plot(sample)%輸出 hold on xlabel('采樣數據包'); ylabel('幅度 [dB]');
3.執行結果
尚未進行處理的原始信號
M=3的時候經過加權移動平均低同濾波的信號
M=4時經過加權移動平均低通濾波的信號
4.結論
最初使用的中值去除雜波方法效果不是很明顯並且處理過程復雜。
后來更改成了加權平均法,對每個點進行加權平均,從而得到了目前相對比較令人滿意的結果。而且我還發現,當M=4到7時對雜波去除的效果是最佳的,過大或過小的數字都會導致信號的過濾效果不好。
另外,我們還使用了部分MATLAB自帶的過濾方法,比如hampel和medfilt2,也都取得了非常不錯的效果。