Matlab通信系统仿真实验实验一熟悉基本的Matlab仿真环境一、实验目的1、熟悉Matlab仿真环境,编制简单的matlab程序,熟悉基本的调试技巧等。
认为学生已经掌握Matlab的基本语法和基本操作。
2、熟悉基本的Matlab中通信仿真工具,相关的函数和命令等的基本使用,包括基本的通信模块相关命令函数,plot相关的命令函数3、计算机通信仿真的基本的技术和方法二、知识要点1、Matlab概述Matlab是由美国的MathWorks公司推出的一种科学计算和工程仿真软件。
Matlab将高性能的科学计算、结果可视化和编程集中在一个易于操作的环境中,提供了大量的内置函数,具有强大的矩阵计算和绘图功能,适用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。
目前,在世界范围内被科研工作者、工程技术人员和院校师生广泛采用。
2、Matlab中的通信仿真工具实现基本的Matlab通信仿真,有两种基本的途径:第一种,用matlab的基本运算和操作实现基本的通信功能模块,当然前提是对这些基本的通信功能模块的概念和原理非常的清晰。
另一种途径是,利用Matlab中提供的专业通信工具箱中的函数实现。
前提是对这些函数功能非常明确,并熟悉其使用的算法和调用的方法,尤其是参数的理解和设置。
Matlab工具箱中包括100多个Matalb函数可用于通信算法的开发、系统分析及设计。
通信工具箱能完成如下任务:1)信源编码及量化2)高斯白噪声信道模型3)差错控制编码4)调制和解调5)发送和接收滤波器6)基带和调制信道模型7)同步,包括模拟和数字锁相环8)多址接入,包括CDMA,FDMA,TDMA.9)分析结果和比较系统误码率的图形用户界面10)用于通信信号可视化图形分析和绘制,包括眼图,星座表等。
11)新增的信道可视化工具用于进行时变信道的可视化和开发。
3、Matlab中的绘图功能Matlab为用户提供了结果可视化功能,只要在命令窗口输入相应的命令,结果就会用图形4、基本的计算机通信仿真的技术和方法蒙特卡罗仿真建立在机率游戏的基础上,因此,以赌城蒙特卡罗命名。
其含义是利用蒙特卡罗方法估计系统参数(例如,误比特率)的仿真。
几个相关的概念和说明:✓蒙特卡罗估计:通过随机试验估计参数值。
✓相对频率:进行大量的随机试验,试验次数为N,以NA表示事件A 发生的次数。
将事件A 发生的概率近似为相对频率,其定义为NA/ N 。
✓在相对频率的意义下,事件A 的概率可以通过重复无限多次随机试验来求得,即:NA/ N的值就是P(A)的估计器。
✓由于实验是随机的,N是有限的实验次数,NA是随机变量,故估计器也是随机变量。
该变量的统计形式决定了其精准度三、实验内容及步骤1、使用下面的例子熟悉描述绘图的基本步骤:【matlab程序】:x=[-5:0.1:5];y1=sin(x);y2=cos(x) ;%准备绘图数据figure(1) ;%打开图形窗口subplot(2,1,1) ;%确定第一幅图绘图窗口plot(x,y1) ;%以x,y1绘图title('plot(x,y1)');%为第一幅图取名为plot(x,y1)grid on;%为第一幅绘制网格线subplot(2,1,2);%确定第二幅图绘图窗口plot(x,y2);%以x,y2绘图xlabel('time');%第二副图横坐标名为‘time’ylabel('y');%第二幅图纵坐标名为‘y’figure(2) ;%打开图形窗口2subplot(2,1,1) ;%图形窗口2中第一幅图的绘图窗口stem(x,y1, 'r') ;%绘制红色的脉冲图subplot(2,1,2);%图形窗口2中第二幅图的绘图窗口errorbar(x,y1, 'g');%绘制绿色的误差条形图【程序运行结果】;2、运用下面的实例熟悉三维绘图步骤和相关函数【matlab程序】:%空间曲线绘制x=[-2 :0.2 :2] ;y1=sin(x) ;y2=cos(x) ;plot3(y1,y2,x) ;grid on ;%空间曲面绘制x=[-2 :0.2 :2] ;y=x ;[X,Y]=meshgrid(x,y) ;%生成x-y坐标“格点”矩阵Z=2.*exp(-X.^2-Y.^2) ;subplot(2,2,1);surf(Z);%绘制曲面shading flat;%把曲面上的小格平滑掉subplot(2,2,2);mesh(Z);%绘制网格曲面subplot(2,2,3);meshc(Z);%等高线投影到平面上subplot(2,2,4);surfl(Z);view(20,0);%变换立体图视角【程序运行结果】:实验2常用信号源和噪声源的仿真一、实验目的1、针对教材第二章的教学内容:随机变量的产生仿真、随机过程的功率谱分析仿真、随机过程通过线性系统的输出信号仿真、带通过程的低通等效仿真等,进行相关内容的熟悉,实践和知识的应用。
2、熟悉上述仿真中的重要的matlab命令或函数。
3、理解信源和噪声源的随机性及其数学模型,进行不同性质随机过程(例如,包括低通随机过程、带限低通随机过程、带通随机过程)的分析和仿真(主要包括产生的方法,随机过程的数字统计特征,包括:均值,方差矩阵,自相关函数,功率谱等)。
二、知识要点1、一种产生高斯分布随机变量的方法(步骤):产生(0,1)内均匀分布的随机变量A利用产生瑞利分布随机变量R产生(0,1)内均匀分布的随机变量B,则:是服从均匀分布的随机变量利用产生一对高斯分布的随机变量。
注意:参数是C和D的方差2、一个平稳随机过程的频域特性用功率谱表征,功率谱和随机过程自相关函数互为傅里叶变换和反变换,即:对于离散时间序列,计算该序列的的自相关,其定义如下:同样,求自相关函数的离散傅里叶变换(DFT)可得到的功率谱。
DFT的定义为:可以采用快速傅里叶变换算法高效地计算出结果。
3、随机过程的线性滤波假设一个平稳随机过程通过某一线性时不变滤波器,该滤波器在时域用它的冲击响应来表征,而在频域则用它的频率响应:来表征,则该线性滤波器的输出随机过程为:的均值是:其中,是频率响应在在的值。
的自相关函数:和的功率谱之间的关系:4、离散时间情况下,随机序列通过线性滤波器的输出仿真:假设一平稳随机过程被采样,其样本通过某一离散线性滤波器,该滤波器的脉冲响应为。
该线性滤波器的输出为(输入和冲击响应的卷积和):其中,是输入随机过程的离散时间值,是离散时间滤波器的输出。
输出过程均值:其中,是频率响应在在的值,输出过程的自相关函数:输出过程的功率谱:其中,输入过程的功率谱为:故:5、低通和带通过程若过程的功率谱在附近是大的,而在高频域很小(接近于0),这个随机过程就称之为低通随机过程。
即:低通随机过程的功率大部分集中在低频域。
若过程的功率谱,则称这个低通随机过程是带限的,参数B称为该随机过程的带宽。
6、带通过程的低通等效:若随机过程的功率谱在某中心频率临近的一个频带内是大的,而在该频带以外相对很小,就称这个随机过程是带通过程。
若通带,则这个过程是一个窄带过程。
通信过程中,携带信息的信号通常是一个低通随机过程。
用它去调制某一载波,而在一个带通(窄带)通信信道上传输,因此,已调信号时一个带通随机过程。
带通随机过程的低通表示:和确定信号一样,带通随机过程能表示为:三、实验内容、步骤及实验结果1、理解教材第46页阐述的一个产生高斯分布随机变量的方法,结合知识要点1,调试并运行教材第47页的程序gngauss程序,输出运行的结果。
【matlab程序】:function [ gsrv1,gsrv2 ] = gngauss( m,sgma )%UNTITLED4 Summary of this function goes here% Detailed explanation goes hereif nargin == 0m=0;sgma=1;elseif nargin == 1sgma=m;m=0;end;u=rand;z=sgma*(sqrt(2*log(1/(1-u))));u=rand;gsrv1=m+z*cos(2*pi*u);gsrv2=m+z*sin(2*pi*u);endfunction [ X ] = gaus_mar( X0,rho,N )%UNTITLED5 Summary of this function goes here% Detailed explanation goes herefor i=1:2:N[Ws(i) Ws(i+1)]=gngauss;endX(1)=rho*X0+Ws(1);for i=2:NX(i)=rho*X(i-1)+Ws(i);endendrho=0.95;X0=0;N=1000;X=gaus_mar(X0,rho,N);plot(X);【程序运行结果】:【实验结果分析】:产生了高斯-马尔科夫系列,说明也产生了高斯分布随机变量,进而得到了验证。
【说明】:调用了gngauss函数和gaus_mar函数,gngauss函数是产生高斯分布随机变量,gaus_mar产生高斯-马尔科夫系列。
2、调试并运行教材第55页解说题2.4的程序,输出运行结果(补充程序中有关结果输出的plot程序语句)。
观察不同次数运行结果的差异,理解程序中采用10次实现求平均自相关的原因。
在调试程序的过程中,关注fftshift,fft,rand等matlab函数的功能及应用,结合自相关函数估计的方法,理解子程序Rx_est的细节内容。
function [Rx]=Rx_est(X,M)% [Rx]=Rx_est(X,M)% RX_EST estimates the autocorrelation of the sequence of random % variables given in X. Only Rx(0), Rx(1), ... , Rx(M) are computed.% Note that Rx(m) actually means Rx(m-1).N=length(X);Rx=zeros(1,M+1);for m=1:M+1,for n=1:N-m+1,Rx(m)=Rx(m)+X(n)*X(n+m-1);end;Rx(m)=Rx(m)/(N-m+1);end;N=1000;M=50;Rx_av=zeros(1,M+1);Sx_av=zeros(1,M+1);for j=1:10;X=rand(1,N)-1/2;Rx=Rx_est(X,M);Sx=fftshift(abs(fft(Rx)));Rx_av=Rx_av+Rx;Sx_av=Sx_av+Sx;end;Rx_av=Rx_av/10;Sx_av=Sx_av/10;figure(1) ;plot(Rx_av);%显示自相关函数f=[-0.5:0.02:0.5];figure(2) ;plot(f,Sx_av);axis([-0.5,0.5,0,0.14]);%给横坐标定范围为[-0.5,0.5]、纵坐标为[0,0.14](都是闭区间)【程序运行结果】:自相关函数功率谱【实验结果分析】:获得的结果与理论结果比较接近,本次的实验比较成功。