Matlab 瑞利信道仿真
转眼间三月都已经过去一半,一直找不到有什么可以写的,一直想等自己把LTE仿真平台搭好后,再以连载的形式记录下来。但是,后来一想,我必须先做好充分的铺垫,在这过程中也遇到了很多问题,及时留下点什么,也是好的。即便以后回过头来再看这些文章,可能会有些许惊讶,惊讶于当时的无知或是稚嫩。不得不说,时间真的是一把杀猪刀,猪没少杀,更可怕的是扼杀了许多人的梦想。今天没有去实验室,我觉得在忙了一周后,应该停下来歇歇,有时候的驻足观望或许是为了更好的前行。
言归正传,今天想记录的是自己在仿真中遇到的一个问题,那就是信道模型的仿真。对于无线通信来说,最常见的就是瑞利衰落+多径+多普勒的模型了。具体分析如下:
瑞利衰落:就是有很多独立的小径的叠加,根据中心极限定理,知道这样的分布满足的是2个自由度的chi-square分布,也就是功率满足指数分布,幅度的分布就叫做瑞利分布。它表明的是信道h的幅度和相位变化情况,幅度满足瑞利分布的变化,相位满足[0,2pi]上均匀分布的变化。可以参考博文:Matlab 简单计算PDF和CDF
多径效应:谈到多径效应,我们就应该想到频率选择性这个概念。简单地说,就是延时的径在频域相当于相位搬移,每个径我们都可以看做是一个矢量,幅度是由它们各自的功率决定,角度(相位)就是由每径延时决定。然后,我们就做矢量相加,最后得到的就是一个旋转矢量,它对每个频率的响应都不同。第二个概念就是,相干带宽:既然信道响应在各个频率点处的不同,那么我们关心的一个问题是,在多大的频率间隔上,它的响应是呈现一定的相关性(也就是说,在这个频率间隔上的响应变化非常慢,可以认为是相同的)。这就很自然的过渡到功率延迟分布图上了,信道响应的频域(相关性)方面实质上是由信道时域的功率延迟分布做傅立叶变换得到的(功率与自相关函数的关系)。功率延迟分布图是一个很有用的工具,我们能从中得到Trms(信道平均延迟,用功率去对延时加权)和Tmax(信道最大延时)等。一般我们假设的是Bc = 0.5*(1/Tmax),当然根据不同的相关系数,这个带宽会有改变的。但至少从感性的角度你知道了什么是相干带宽。重点还是一句话:信道是个随机过程,我们要去看它的频域相关性,那我们就要去研究功率谱,因为功率谱和相关性就是一傅立叶变换的关系。可以参考博文:从简单信道估计说起
多普勒效应:谈到多普勒效应,我们应该想到的是信道在时间域上的变化。这个可以这么理解(虽然不严密),多普勒效应是怎么来的?不就是你离声源的距离的变化,导致了你接收到的信号频率的改变嘛。类比过来,你离基站距离改变,那么它传播信号到你接受端时间也在改变,时间的改变不就对应着你接收相位或是频率的改变嘛(exp(-jwT)其中T就是时间的变化量),从多普勒定义也能看出,你接收端运动速度越快,多普勒频率就越大,不就是你和基站间信道条件变化越快嘛。不得不说的一个概念是:相干时间,这完全跟相关带宽是一个对偶的概念,我们要知道时域上的相关性,我们就从频域着手,做傅立叶变换就能得到相干时间了,这也就是为什么我们在仿真时候有什么多普勒功率谱和高斯功率谱等区别。一般定义相干时间是Tc = 0.423*(1/Fm),Fm是最大多普勒频移。
再谈完了基本概念后,我们就要造这么一个信道来仿真看看,三要素就是上面三点,我们一一来完成。我想先说的是,有很多经典的模型来仿真,最经典的莫过于JAKES频域反变换方法来产生时间相关性的瑞利模型,Matlab自带的函数就是用这种方法产生的貌似,下面我们先产生单径,它是带时间相关性(存在多普勒)。
- chan = rayleighchan(1/15000,500);%1/15000代表我们的采样频率,也就是我一个点代表的是多长一段时间单位。500就是最大多普勒频移...
- %其实我们可以想这个函数怎么能工作呢?其实我们我们给定了500的多普勒,它就会按一定的相关时间计算出具体的相关时间,然后它又知道你的采样频率,它就知道在多少个采样点它应该是相关的了,就这么简单!
- x = ones(1,140);%源数据
- y = filter(chan,x);%经过信道后的输出
- plot(abs(y))
首先看看chan的具体参数:

当然更具体的设置你可以doc rayleighchan里看看
我们来看看最后的输出是不是带相关性的:

从图中可以看出信道是慢变的,当然如果你把多普勒频移取得再大点的话,它的变化就明显了,如上图!我们来验证下相关时间,我们按照公式9/(16*pi*fm)来计算约等于0.18*(1/fm),在fs = 15000情况下,可以估计出在相关性大于0.5的点数应该是5-6个。
- [r,lags] = xcorr(y,'coeff');
- stem(lags,r)

如果你还不相信的话,那我们就看看它的功率谱是不是满足在多普勒频移之间的jakes模型。
- chan = rayleighchan(1/15000,500);
- x = ones(1,4000);
- y = filter(chan,x);
- fs = 15000;
- Y = fft(y,4096);
- Y = fftshift(abs(Y));
- plot([-2048:2047]*fs/4096,Y.*Y)
- axis([-1000 1000 min(Y.*Y) max(Y.*Y)])

这下可以放心了吧,通过多次求傅立叶平均可以得到更加平滑的曲线。
单径我们已经产生好了,多径还远吗?我们只需要再产生几条这样的单径,给予每条径不同的功率大小,一般是指数衰减。例如:
H = [path1 path2 path3 path 4 ....]每径都是一个列向量,对于OFDM来说,H 的每行就是对于每个符号的信道,你就只需要做卷积就行啦,这样在频域上就有选择性了。然后呢,在时间上,下一个符号也就是第二行,又是一个多径信道,只不过每个径都变化了一点,这一点的大小就是多普勒频移决定的。
转:http://blog.csdn.net/mike190267481/article/details/7359576
Matlab 瑞利信道仿真的更多相关文章
- matlab的滤波器仿真——低通滤波器与插值滤波器
项目里面有用到插值滤波器的场合,用matlab做了前期的滤波器性能仿真,产生的滤波器系数保存下来输入到FPGA IP中使用即可. 下面是仿真的代码 % clear all close all Nx = ...
- matlab之simulink仿真入门
Matlab Simulink仿真工具的应用 ****Simulink是一个用来对动态系统进行建模.仿真和分析的软件包.使用Simulink来建模.分析和仿真各种动态系统(包含连续系统.离散系统和混合 ...
- Matlab Robotics Toolbox 仿真计算:Kinematics, Dynamics, Trajectory Generation
1. 理论知识 理论知识请参考: 机器人学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译 机器人学课程讲义(丁烨) 机器人学课程讲义(赵言正) 2. Matlab Robotic ...
- MATLAB——神经网络sim仿真函数
- OFDM通信系统的MATLAB仿真(1)
由于是第一篇博客,想先说点废话,其实自己早就想把学到的一些东西总结成文章随笔之类的供自己复习时查看的了.但是一是觉得自己学的的不够深入,总结也写不出什么很深刻的东西:二是觉得网上也有海量的资料了,需要 ...
- OFDM通信系统的MATLAB仿真(2)
关于OFDM系统的MATLAB仿真实现的第二篇随笔,在第一篇中,我们讨论的是信号经过AWGN信道的情况,只用添加固定噪声功率的高斯白噪声就好了.但在实际无线信道中,信道干扰常常是加性噪声.多径衰落的结 ...
- Matlab下多径衰落信道的仿真
衰落信道参数包括多径扩展和多普勒扩展.时不变的多径扩展相当于一个延时抽头滤波器,而多普勒扩展要注意多普勒功率谱密度,通常使用Jakes功率谱.高斯.均匀功率谱. 多径衰落信道由单径信道叠加而成,而单径 ...
- 经典功率谱估计及Matlab仿真
原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...
随机推荐
- iptables设置端口转发
转自:https://blog.csdn.net/sigangjun/article/details/17412821 一 从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /p ...
- HTML5 Selection对象
一.实例1,设置网页选中内容并且复制到黏贴板 <p id='txtone'>发的FDSAFSDFDS!其实不管哪个行业, <img src='http://beijing.gongj ...
- JAVA递归、非递归遍历二叉树(转)
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...
- CentOS7下FTP的安装与配置
1.安装vsftpd 1 [root@localhost modules]# yum install -y vsftpd 2.编辑ftp配置文件 1 [root@localhost modules]# ...
- 机器学习中的规则化范数(L0, L1, L2, 核范数)
目录: 一.L0,L1范数 二.L2范数 三.核范数 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问 ...
- spring mvc 链接 postgresql
上一篇文章已经分享了搭建springmvc:http://www.cnblogs.com/liqiu/p/4252788.html 这一篇来链接数据库postgresql 1.在pom.xml添加几个 ...
- eclipse preference plugin development store and get
eclipse plugin development: E:\workspaces\Eclipse_workspace_rcp\.metadata\.plugins\org.eclipse.pde.c ...
- Mongodb对集合(表)和数据的CRUD操作
一.集合(对应数据库的表) 1.查看当前库里的所有集合 show collections 2.新建集合 显式创建 db.createCollection("user") 隐式创建 ...
- 让WebService支持Get请求
在C#中,新建一个webservice,默认是post类型的.如果需要支持Get请求,需要对web.config文件进行配置 <system.web> <compilation de ...
- Photodesk for Mac(Instagram 桌面客户端)破解版安装
1.软件简介 PhotoDesk - for Instagram 是 macOS 系统上一款 Instagram 客户端,可以让大家在 Mac 上观看朋友的新照片.或是最近热门的作品,也可以 f ...