基於MATLAB的信道狀態信息處理


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,也都取得了非常不錯的效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM