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

posted @ 2022-01-09 00:12  sftsgly  阅读(1872)  评论(0)    收藏  举报