zoukankan      html  css  js  c++  java
  • rayleighchan实现瑞利多径衰落信

    rayleighchan实现瑞利多径衰落信道

    1.命令格式: 
    chan = rayleighchan(ts,fd,tau,pdb) 
    其中: 
    ts—为输入信号的采样周期, 
    fd—就是Doppler频偏,以Hz为单位,与速率的换算关系为v×fc/c,fc是载频 
    tau—输入的信道参数,一个向量,包含了各径的延时,以s为单位 
    pdb—输入的信道参数,一个向量,包含了各径的功率(当然是均值啦,实际产生的能量都是以此为均值的随机量),以dB为单位。 
    然后y = filter(chan,x),即可将信道的影响加在输入的数据x上。

    2.原理: 
    rayleighchan函数生成信道的过程实际是设计一个多抽头的滤波器,而滤波器的系数计算是多个sinc函数加权、延时后的求和: 
    g(n)=sum_k{ sinc( tau(k)/Ts-n) h(k) },-N1<=n<=N2 
    其中N1和N2的选取要使得在-N1<=n<=N2之外的g(n)很小可忽略。

    rayleighchan函数的实现步骤是这样的: 
    1) h(k)看作是一串冲激函数,与sinc函数卷积,sinc函数的边瓣周期由输入参数采样时间Ts决定,如果看连续时间波形的话,整个信道响应就是多个不同时延、不同幅度的sinc函数的叠加; 
    2) 对这个连续的信道响应进行采样得到信道滤波器的抽头系数,采样间隔为Ts,而采样点的个数是要保证舍弃位置的信道响应足够小可以忽略,如果采样率过小则Ts较大sinc函数衰减慢,需要保存较多个抽头系数,此时很可能在第一径位置之前出现若干个信道采样点,即h(n)~=0, n<0; 
    3)输入信号(以Ts为间隔的采样点)与滤波器进行卷积输出(filter函数的作用)。

     注:输入信号和多径衰落信道的采样间隔必须相同。
    

    3.补充:

              sinc函数定义:sinc(x)=sin(x)/x
    

    4.举例:

    程序:

    clear all
    close all
    clc
    %-----------------------------升余弦滤波器
    Fs=9600;            %采样频率
    Ts=1/Fs;            %采样间隔
    Fd=960;              %Doppler频偏,以Hz为单位
    tau=[0,0.002];          %多径延时,以s为单位
    pdf=[0,0];          %各径功率,以dB位单位
    h=rayleighchan(Ts,Fd,tau,pdf);
    %-------------------------------通过信道
    data1=[1,zeros(1,100)];%数据1 
    fc=96;
    t=0:1/Fs:999*(1/Fs);
    data2=cos(2*pi*fc*t); %数据2 
    data2_fft=fft(data2,100);
    data2_abs=abs(data2_fft);
    
    y1=filter(h,data1);
    y11=abs(y1);
    y2=filter(h,data2);
    y22=fft(y2,100);
    y222=abs(y22);
    
    subplot(2,2,1);
    x1=1:length(data1);
    h1=stem(x1,data1);
    set(h1,'MarkerFaceColor','red')
    
    subplot(2,2,3);
    x3=1:length(y11);
    h3=stem(x3,y11);
    set(h3,'MarkerFaceColor','red')
    
    subplot(2,2,2);
    x2=1:length(data2_abs);
    h2=stem(x2,data2_abs);
    set(h2,'MarkerFaceColor','blue')
    
    subplot(2,2,4);
    x4=1:length(y222);
    h4=stem(x4,y222);
    set(h4,'MarkerFaceColor','blue')

    分析: 
    1.tau延时向量,时域上的参数,时域采样后延迟的点数为fix(tau/Ts). 
    2.Fd:多普勒频偏,频域上的参数,可以看到信号频域发生偏移,但是并不是简单的频率搬移,而是信号频率发生扩展,原来是单频信号,变为频率段信号。


    经过数值的设定可以看到,在command history框下输入chan得到:

    chan的writeable properties

    1) 如何设定chan所需的各径的多普勒谱? 
    多普勒谱的种类一共有7种: 
    doppler.ajakes;doppler.bigaussian;doppler.jakes;doppler.rjakes;doppler.flat;doppler.gaussian和doppler.rounded。 
          在rayleighchan函数中默认的是Jakes谱,即doppler.jakes。修改多普勒谱的方法是直接对chan.DopplerSpectrum进行设置。

          这里默认了各径都是按照gaussian谱来生成的,如果需要各径的Doppler谱不同则可以通过设置 ,即可得到对应于PathDelays的各径DopplerSpectrum。

    2) InputSamplePeriod 
    直接设置即可,无线信道传输的基带信号的符号周期

    3) PathDelays 
    每条径的延时,单位是seconds

    4) MaxDopplerShift 
    最大多普勒频移:对于rayleighchan函数的使用方法研究

    5) AvgPathGaindB 
    每条路径增益的平均功率,单位是分贝。

    6) StoreHistory 
    将chan.StoreHistory设置为1时,可以把信道的信息记录下来,并可以通过Plot(chan)画出当前的信道的时域IR,频域相应等各种图。

    7) NormalizePathGains 
    将chan.NormalizePathGains设置为1时,每条路径增益绝对值的平方和(即功率和)的平均值为1。这个可以通过多次使用rayleighchan生成信道,求取信道各路径增益绝对值的平方和即可看到其平均值为1。

    8) StorePathGains 
    将chan.StorePathGains设置为1时,各路径的增益将会被记录下来,但是不能使用Plot(chan)画图。

    • 在这里额外说一点,信道的StorePathGains设为1时,查看chan.PathGains可以发现这个值是一个N×M的矩阵,在这里N是信道处理的数据长(也就是输入信号的长度),M是多径数。这里的chan.PathGains每列是线性变化的,原因是在处理每个数据时信道由于受到多普勒谱的影响是时变的,但信道的状态是连续的。

    9) ResetBeforeFiltering 
    将chan.ResetBeforeFiltering在使用filter函数前设置为0时,可以看到信道各路径的斜率会是一个值,也就是无论处理多少数据信道的实际状态都是连续的,无论其他的条件(比如噪声和输入信号)发生怎样的变化,信道的状态是连续的,但不是说信道的增益值是恒定的数值,只是信道增益的实际值线性增长的,信道的状态时连续的。(每次使用filter函数一次,信道增益的实际数值都是会发生变化的。)只要信道的状态不变就相当于信道没有发生质的变化,在仿真时我们可以认为使用的是同一个信道。

    如果设置为1,则是说明每次生成的信道增益的状态是不连续的,也就是信道发生了变化,我认为这在仿真时可以控制信道变化的快慢。

    chan2的read-only properties

    1) ChannelType 
    这个就没什么好说了,只是说明使用函数生成的信道是瑞利的还是莱斯的。

    2) PathGains 
    信道各路径的真实增益,这个增益不是通过AvgPathGaindB换算过来的,AvgPathGaindB是平均增益,所以生成的各路径增益的功率值是围绕这个值生成的。

    3) ChannelFilterDelay 
    这个值没有什么好说的,原因是这个值没有什么用,它一般是和信道的PathDelays的第一个值是对应的。

    4) NumSamplesProcessed 
    这个值是说信道处理了多少个数据,如果输入信号矢量的长度是N,则这个值就是N。

    文章转自于: 
    http://blog.sina.com.cn/s/blog_ab9e9fc30101ejf5.html 
    http://blog.sina.com.cn/s/blog_8d3179bd01015jm8.html

    http://blog.csdn.net/shenjun1992722/article/details/50193381

  • 相关阅读:
    bzoj 2115: [Wc2011] Xor【线性基+dfs】
    bzoj 1027: [JSOI2007]合金【凸包+Floyd】
    bzoj 4824: [Cqoi2017]老C的键盘【树形dp】
    bzoj 2111: [ZJOI2010]Perm 排列计数【树形dp+lucas】
    bzoj 4822: [Cqoi2017]老C的任务【扫描线+树状数组+二维差分】
    bzoj 4823: [Cqoi2017]老C的方块【最大权闭合子图】
    bzoj 4826: [Hnoi2017]影魔【单调栈+树状数组+扫描线】
    洛谷 P3731 [HAOI2017]新型城市化【最大流(二分图匹配)+tarjan】
    洛谷 P3732 [HAOI2017]供给侧改革【trie树】
    poj 1474 Video Surveillance 【半平面交】
  • 原文地址:https://www.cnblogs.com/xh0102/p/6382598.html
Copyright © 2011-2022 走看看