通信系统建模与仿真作业

合集下载

通信系统建模与仿真01

通信系统建模与仿真01

1.6 系统建模仿真方法与仿真工具
现代仿真平台和编程语言环境的基本特征
简便高效的仿真描述语言。 层次化和模块化建模的能力。 可视化的建模方式。 软件硬件协同仿真的能力。 交互性和图形环境。 跨平台和可移植性。
1.6 系统建模仿真方法与仿真工具
仿真环境的构成和要求
模块库。 模块编辑和配置器。 仿真管理器。 后处理部分。 文件和数据库管理。 帮助文档。
1.3 通信系统模型的分类
1 按照系统层次分类
通信系统的最高层次描述是通信网络层次
可以进行对节点信息处理标准,通信协议以及通 信链路拓扑结构的设计和验证工作。
在网络层次之下,是对通信节点和链路以 及传输信号的具体化,称为链路层次模型。
通过对输入输出波形或符号的仿真,来验证链路 设计是否满足由网络层次仿真所要求的链路质量 指标。
强大的计算机辅助分析与设计工具和 系统仿真方法作为将新的技术理论成 果转换为实际产品的高效而低成本途 径越来越受到业界的青睐。
1.1 通信系统仿真的现实意义
其他应用领域
建筑/城市规划 交通
医学
1.1 通信系统仿真的现实意义
军事领域
武器装备研制 军事训练
工业领域
电力工业 制造业
1.3 通信系统模型的分类
3 按照系统特征分类
恒参系统 变参系统或时变系统 确定系统 随机系统 无记忆系统 有记忆系统或动态系统
1.4 通信系统仿真的方法
1 基于动态系统模型的状态方程求解 方法
所谓动态系统建模,就是根据研究对象的 物理模型找出相应的状态方程的过程。
所谓对动态系统的仿真,就是利用计算机 来对所得出的状态方程进行数值求解的过 程。
第一章 通信系统仿真的原理和方法论

MATLAB通信建模实验仿真实验报告

MATLAB通信建模实验仿真实验报告

实验1:上采样与内插一、实验目的1、了解上采样与内插的基本原理和方法。

2、掌握上采样与内插的matlab程序的设计方法。

二、实验原理上采样提高采样频率。

上采样使得周期降低M倍,即新采样周期Tu和原有采样周期Ts的关系是T u=T s/M,根据对应的连续信号x(t),上采样过程从原有采样值x(kT s)生成新采样值x(kT u)=x(kT s/M)。

操作的结果是在每两个采样值之间放入M-1个零值样点。

更实用的内插器是线性内插器,线性内插器的脉冲响应定义如下:上采样值x(kT u)=x(kT s/M)通过与线性内插器的脉冲响应的卷积来完成内插。

三、实验内容仿真正弦波采样和内插,通过基本采样x(k),用M=6产生上采样x u(k),由M=6线性内插得到样点序列x i(k)。

四、实验程序% File: c3_upsampex.mM = 6; % upsample factorh = c3_lininterp(M); % imp response of linear interpolatort = 0:10; % time vectortu = 0:60; % upsampled time vectorx = sin(2*pi*t/10); % original samplesxu = c3_upsamp(x,M); % upsampled sequencesubplot(3,1,1)stem(t,x,'k.')ylabel('x')subplot(3,1,2)stem(tu,xu,'k.')ylabel('xu')xi = conv(h,xu);subplot(3,1,3)stem(xi,'k.')ylabel('xi')% End of script file.% File: c3_upsample.mfunction out=c3_upsamp(in,M)L = length(in);out = zeros(1,(L-1)*M+1); for j=1:Lout(M*(j-1)+1)=in(j); end% End of function file.% File: c3_lininterp.m function h=c3_lininterp(M) h1 = zeros(1,(M-1)); for j=1:(M-1) h1(j) = j/M; endh = [0,h1,1,fliplr(h1),0]; % End of script file.四、 实验结果012345678910x0102030405060x u01020304050607080-11x i实验二:QPSK、16QAM信号的散点图、正交、同相分量波形图一、实验目的1、了解QPSK、16QAM调制的基本原理。

QPSK在AWGN信道下的仿真

QPSK在AWGN信道下的仿真

《通信系统建模与仿真》大作业——QPSK 通信系统仿真通信一班 游贺龙一、 基本原理1.1QPSK 简介在数字相位调制中,M 个信号波形可表示为()()()()22(1)/Re 2()cos 2122()cos 1cos 2()sin (1)sin 2c j f tj m M m c c c s t g t e e g t f t m M g t m f t g t m f tM Mππππππππ-⎡⎤=⎣⎦⎡⎤=+-⎢⎥⎣⎦=--- (m=1,2,…,M ,0t T ≤≤)式中,g(t)是信号脉冲形状,2(1)/m m M θπ=- (m=1,2,…,M )是载波的M 个可能的相位,用于传送发送信息。

这些信号波形具有相等的能量,即 220011()()22TT m g s t dt g t dt εε===⎰⎰ 而且这些信号波形可以表示为两个标准正交信号波形1()f t 和2()f t 的线性星座图合,即1122()()()m m m s t s f t s f t =+,式中1()()cos 2c f t t f t π=2()()sin 2c f t t f t π=且二维向量1,2m m m s s s ⎡⎤=⎣⎦为22((1)m s m m M M ππ⎤=--⎥⎥⎦(m=1,2,…,M ) 其中当M=4时就是本文要讨论的4PSK (QPSK ),QPSK 的载波相位有四种取值,每种取值代表两比特的信号。

随着信号的改变,幅度恒定的载波信号的相位在四种取值间跳变。

这四个相位的取值为间隔相等的值,比如,0,/2,,3/2πππ,每一个相位值对应于唯一的一对消息比特。

有一种变形,称为/4QPSK π-是通过在每一个符号间隔的载波相位中引入附加的/4π相移来使符号同步变得容易些。

QPSK 信号可以表示为: 2()cos (1)2s QPSK c s E S t t i T πω⎡⎤=+-⎢⎥⎣⎦ 0S t T ≤≤,i=1,2,3,4 式中S E 为单位符号的信号能量,即0S t T ≤≤时间内的信号能量;c ω为载波角频率,s T 为符号持续时间。

MatlabSimulink通信系统建模与仿真

MatlabSimulink通信系统建模与仿真

电子信息课程设计题目:Matlab/Simulink通信系统建模与仿真班级:2008级电子(1)班学号:200895024026姓名:白阳电子信息课程设计Matlab/Simulink通信系统建模与仿真一、设计目的:学习Matlab/Simulink的功能及基本用法,对给定系统进行建模与仿真。

二、基本知识:Simulink是用来对动态系统进行建模、仿真和分析的软件包,依托于MATLAB丰富的仿真资源,可应用于任何使用数学方式进行描述的动态系统,其最大优点是易学、易用,只需用鼠标拖动模块框图就能迅速建立起系统的框图模型。

三、设计内容:1、基本练习:(1)启动SIMULINK:先启动MATLAB,在命令窗口中键入:simulink,回车;或点击窗口上的SIMULINK图标按钮。

图(1)建立simulink(2)点击File\new\Model或白纸图标,打开一个创建新模型的窗口。

(3)移动模块到新建的窗口,并按需要排布。

(4)连接模块:将光标指向起始模块的输出口,光标变为“+”,然后拖动鼠标到目标模块的输入口;或者,先单击起始模块,按下Ctrl键再单击目标模块。

(5)在连线中插入模块:只需将模块拖动到连线上。

(6)连线的分支与改变:用鼠标单击要分支的连线,光标变为“+”,然后拖动到目标模块;单击并拖动连线可改变连线的路径。

(7)信号的组合:用Mux模块可将多个标量信号组合成一个失量信号,送到另一模块(如示波器Scope)。

(8)生成标签信号:双击需要加入标签的信号线,会出现标签编辑框,键入标签文本即可。

或点击Edit\Signal Properties。

传递:选择信号线并双击,在标签编辑框中键入<>,并在该尖括号内键入信号标签即可。

四、建立模型1. 建立仿真模型(1)在simulink library browser中查找元器件,并放置在创建的新模型的窗口中,连接元器件,得到如下的仿真模型。

通信系统建模与仿真

通信系统建模与仿真

通信系统建模与仿真---test 111041287 李洁1.Gaussian distributed random variates, draw thecorresponding PDFs(histograms) for N(µ,δ2)be N(0,1),N(0,4.26),and N(-2.5,1)by using the random variatesobtained.解题思路:根据老师所给ppt上的第四种方法,要得到一个高斯分布的概率密度函数分布,首先要得到12组服从(0,1)分布的均匀分布函数,然后根据公式得到服从(0,1)分布的标准正态分布,在根据公式X´=µ+σX得出其他服从(µ,σ)的高斯分布。

在通过写入文件的方式把代码写入文档中,从matlab中调出函数,得到直方图。

编程思路:(1)写一个gaosi子函数,在gaosi子函数中,首先用for 循环得到12个服从均匀分布的数值,在用for循环把他们加起来得到c,再c-6.0得到x,此时得到的x是服从(0,1)分布的变量,根据公式z=sigma*x+mean就可以得到服从任意(µ,σ)值所得到的高斯分布。

因为其中涉及初始值的问题,为了方便起见,给定u[0],在一次运算之后,赋予u[12]=u[0]。

主函数则利用for循环直接对子函数调用10000次就得到了10000个服从(µ,σ)分布的高斯分布随机变量。

N(0,1)代码如下,图如图1.1所示:# include <stdio.h># include <math.h># include <stdlib.h>double data0=12345678;double gaosi(double mean,double sigma ){int i;double z;double a=69069,b[12],u[12],M=pow(2,32),x,c;b[0]=data0;for(i=1;i<13;i++){b[i]=fmod((a*b[i-1]+1),M);u[i-1]=b[i-1]/M;}printf("\n");data0=b[12];c=0.0;for(i=0;i<12;i++){c=c+u[i];}x=c-6.0;z=sigma*x+mean;return z;}main(){int k;double a[10000];int i=0;FILE *fp;fp=fopen("d:\\gaosi.txt","w"); double x[10000];for (k=0;k<10000;k++){ x[k]=gaosi(0,1);printf("%.6f \n",x[k]);a[i++]=x[k];}for(i=0;i<10000;i++)fprintf(fp,"%6.2lf",a[i]);fclose(fp);getchar();}N(0,4.26)代码如下,图如图1.2所示:# include <stdio.h># include <math.h># include <stdlib.h>double data0=2345678;double gaosi(double mean,double sigma ){int i;double z;double a=69069,b[12],u[12],M=pow(2,32),x,c;b[0]=data0;for(i=1;i<13;i++){b[i]=fmod((a*b[i-1]+1),M);u[i-1]=b[i-1]/M;// printf("%.3f ",u[i-1]);}printf("\n");data0=b[12];c=0.0;for(i=0;i<12;i++){c=c+u[i];// printf("%.3f ",c);}x=c-6.0;// printf("%.3f ",x);z=sigma*x+mean;return z;}main(){int k;double a[10000];int i=0;FILE *fp;fp=fopen("d:\\gaosi2.txt","w");double x[10000];for (k=0;k<10000;k++){ x[k]=gaosi(0,4.26);printf("%.6f\n",x[k]);a[i++]=x[k];}for(i=0;i<10000;i++)fprintf(fp,"%.6lf\n",a[i]);fclose(fp);getchar();}N(-2.5,1)代码如下,图如图1.3所示:# include <stdio.h># include <math.h># include <stdlib.h>double data0=2345678;double gaosi(double mean,double sigma ){int i;double z;double a=69069,b[12],u[12],M=pow(2,32),x,c;b[0]=data0;for(i=1;i<13;i++){b[i]=fmod((a*b[i-1]+1),M);u[i-1]=b[i-1]/M;// printf("%.3f ",u[i-1]);}printf("\n");data0=b[12];c=0.0;for(i=0;i<12;i++){c=c+u[i];// printf("%.3f ",c);}x=c-6.0;// printf("%.3f ",x);z=sigma*x+mean;return z;}main(){int k;double a[10000];int i=0;FILE *fp;fp=fopen("d:\\gaosi2.txt","w");double x[10000];for (k=0;k<10000;k++){ x[k]=gaosi(-2.5,1);printf("%.6f\n",x[k]);a[i++]=x[k];}for(i=0;i<10000;i++)fprintf(fp,"%.6lf\n",a[i]);fclose(fp);getchar();}2. Rayleigh distributed random variates by using N(0,1), draw the corresponding PDFs(histograms) for Rayleigh(1), (0.36), (3.4).解题思路:根据ppt所述方法,要得到瑞利分布,首先要先产生2个服从(0,1)分布的高斯分布,由于上一题就是要得到高斯分布,所以可以改变初值,得到2组服从高斯分布的随机变量并且存入文档中。

Matlab通信系统建模与仿真例题源代码-第三章

Matlab通信系统建模与仿真例题源代码-第三章

% ch3example1A.mclear;f_p=2400; f_s=5000; R_p=3; R_s=25; % 设计要求指标[n, fn]=buttord(f_p,f_s,R_p,R_s, 's'); % 计算阶数和截止频率Wn=2*pi*fn; % 转换为角频率[b,a]=butter(n, Wn, 's'); % 计算H(s)f=0:100:10000; % 计算频率点和频率范围s=j*2*pi*f; % s=jw=j*2*pi*fH_s=polyval(b,s)./polyval(a,s); % 计算相应频率点处H(s)的值figure(1);subplot(2,1,1); plot(f, 20*log10(abs(H_s))); % 幅频特性axis([0 10000 -40 1]);xlabel('频率Hz');ylabel('幅度dB');subplot(2,1,2); plot(f, angle(H_s)); % 相频特性xlabel('频率Hz');ylabel('相角rad');figure(2); freqs(b,a); % 也可用指令freqs直接画出H(s)的频率响应曲线。

% ch3example1B.mclear;f_p=2400; f_s=5000; R_p=3; R_s=25; % 设计要求指标[n, fn]=ellipord(f_p,f_s,R_p,R_s,'s'); % 计算阶数和截止频率Wn=2*pi*fn; % 转换为角频率[b,a]=ellip(n,R_p,R_s,Wn,'s'); % 计算H(s)f=0:100:10000; % 计算频率点和频率范围s=j*2*pi*f; % s=jw=j*2*pi*fH_s=polyval(b,s)./polyval(a,s); % 计算相应频率点处H(s)的值figure(1);subplot(2,1,1); plot(f, 20*log10(abs(H_s))); % 幅频特性axis([0 10000 -40 1]);xlabel('频率Hz');ylabel('幅度dB');subplot(2,1,2); plot(f, angle(H_s)); % 相频特性xlabel('频率Hz');ylabel('相角rad');figure(2); freqs(b,a); % 也可用指令freqs直接画出H(s)的频率响应曲线。

完整版simulink模拟通信系统仿真及仿真流程

完整版simulink模拟通信系统仿真及仿真流程

基于Simulink的通信系统建模与仿真——模拟通信系统姓名: XX日XX月XX年XX完成时间:一、实验原理(调制、解调的原理框图及说明)AM调制AM调制是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程。

AM调制原理框图如下AM信号的时域和频域的表达式分别为为外加的直流分量;可以是确知信号也可以是随机信号,但通式中,,即常认为其平均值为0。

AM解调还原为调制信号。

AM信号的解调是把接收到的已调信号信号的AM 解调方法有两种:相干解调和包络检波解调。

相干解调原理框图如下。

相干解调的关键在于必须产生一个与调制器同AM 则会破坏原始信号的恢复。

频同相位的载波。

如果同频同相位的条件得不到满足,信号波形的包络与输入基带信号成正包络检波解调原理框图如下。

AMAM比,故可以用包络检波的方法恢复原始调制信号。

包络检波器一般由半波或全波整流器和低通滤波器组成。

DSB调制(=1)在幅度调制的一般模型中,若假设滤波器为全通网络,调制信号中无直流分量,则输出的已调信号就是无载波分量的双边带调制信号(DSB)。

调制原理框图如下DSB.DSB信号实质上就是基带信号与载波直接相乘,其时域和频域表示式分别为DSB解调DSB只能进行相干解调,其原理框图与AM信号相干解调时完全相同,如图SSB调制SSB调制分为滤波法和相移法。

调制原理框图如下所示。

图中的为单边带滤波器。

产生滤波法SSB或理想低通信号最直观方法的是,将SSB设计成具有理想高通特性的单边带滤波器,特性从而只让所需的一个边带通过,而滤除另一个边带。

,产生下边带信号时即为产生上边带信号时。

即为滤波法SSB调制的频域表达式调制的原理框图如下。

图中,SSB为希尔伯特滤波器,它实质相移法上是一个宽带相移网络,对。

中的任意频率分量均相移相移法SSB调制时域表达式如下。

式中,“-”对应上边带信号,“+”对是的希尔,称的所有频率成分均相移应下边带信号;表示把伯特变换。

通信系统建模与仿真

通信系统建模与仿真

一、实验内容本实验使用SIMULINK进行简单通信系统搭建,比较不同的信道模型和不同的调制方式对信息传递的影响。

二、实验方案通信系统负责将包含信息的消息从发送端有效地传递到接收端。

本文搭建系统的结构图如1-1,图1-1 简单通信系统框图2.1调制方式性能比较本文主要在AWGN信道前提下比较BPSK和QPSK两种调制方式,SIMULINK系统搭建如下,图1-2 基于BPSK调制方式的通信系统图1-3 基于QPSK调制方式的通信系统2.2 不同信道性能比较本文主要在2-FSK的前提下,比较分析两种常见通信信道(AGWN channel,Rayleigh channel)的性能。

其SIMULINK搭建如下,图1-4基于AGWN通信信道的通信系统图1-5基于Rayleigh、AWGN通信信道的通信系统三、参数选择3.1 比较调制方式性能参数设置在图1-2,图1-3两个系统中,本文采用了相同的信源模块、相同的信道模块,不同的调制模块,已达到比较的目的。

信源采用Random Integer Generator模块,参数设置如下:图1-6 信源模块参数设置信道模块采用AWGN Channel模块,参数设置如下:图1-7 AWGN信道参数设置BPSK调制模块与解调模块参数设置如下:图1-8 BPSK调制模块参数设置图1-9 BPSK解调模块参数设置在本文中采用了一个很重要的误码率分析工具bertool,其参数设置如下:3.2 比较信道特性参数设置本节基于2-FSK调试方式下,比较了只有高斯白噪声特性信道和具有两种高斯白噪声、瑞利特性信道误码率情况。

下面将列举几个重要模块的参数设置:图1-10 信源模块参数设置图1-11 2-FSK调制模块参数设置图1-11 2-FSK解调模块参数设置图1-12 瑞利信道参数设置以上参数设置完成之后,我们将在第四部分中,利用Bertool工具得出两种特性的信道对误码率的影响。

四、仿真结果及分析4.1 调制比较仿真结果与分析通过上述参数的设置,我们可以得出一个比较图,如下:图1-13 两种调制方式下,误码率随信噪比的变化从bertool 工具所绘制出的图中,我们可以得出结论:在相同的信源模块以信道模块下,BPSK 调制方式的情况要优于QPSK 。

MATLAB课件·第4章 通信系统的建模与仿真

MATLAB课件·第4章  通信系统的建模与仿真

B 这种典型的情况,带通采样定理所规定的采
样频率近似等于下界 2 B 。 对整个通信系统进行仿真开发时,选择对系统合适的采样频率是要做的一个基本决 定。除考虑上述信号带宽外,有许多因素影响所需的系统采样频率。具有反馈的系统、非 线性系统、多径信道等会导致更高的采样频率要求。对于无反馈的线性系统,必需的采样 频率可由可接受的混叠误差决定的,而这又有赖于发送滤波器成形脉冲的功率谱密度。成 形脉冲是假定时域有限的,因此不可能是带宽有限的,因而会产生在实际中不可能消除混 叠误差。为仿真选择合适的采样频率的一个策略就是在混叠误差和仿真时间之间达成一个 可以接受的折衷。目标是选择一个采样频率,使得混叠误差相对于仿真所考察的系统性能 的降低是可以忽略的。 有些要仿真的系统(如扩频通信系统)包含两个或多个不同信号带宽的子系统。扩频 通信系统同时包括窄带信号和宽带信号。如果使用单一的采样频率,那么这个采样频率必 须与宽带波形相适应,而用宽带信号所需的采样率对窄带信号进行采样,将导致仿真的时 间过大和效率降低。一般最有效的方法是对每个过程用它的奈奎斯特速率采样,对整个系 统而言采用多速率采样。系统中出现两个不同带宽时,可采用两个采样率:在窄带到宽带 的分界处提高采样频率(上采样),而在宽带到窄带的分界处降低采样频率(下采样)。 采样频率的提高是通过对在原始样点之间内插新的样点来完成;采样频率的降低是通过从 原样点每多个样点抽取一个来实现。 采样点的值在计算机中是用有限长的码字来量化,所以在仿真中都会出现量化误差。 计算机处理表示数字的方式可以分为定点和浮点两类。当用定点数表示时,字长每增加一 个比特,量化的信噪比增加 6dB 。在通用计算机上采用浮点数表示进行仿真操作时,由量 化导致的量化误差通常可以忽略不计。然而,这种噪声永远不会为零,在噪声累积的情况 过多时可能会严重地降低仿真结果的精度。 3. 信道编码器和译码器 信道编码器对数码流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力。信 道编码的处理技术有差错控制码、交织编码器等。差错控制码有线性差错控制码(汉明 码、线性循环码等)、Reed-Solomon 码、卷积码、Turbo 码、LDPC 码等。信道译码器完 成信道编码的译码。交织编码技术可离散化并纠正信号衰落引起的突发性差错,改善信道

Matlab 通信系统建模与仿真例题源代码-第二章

Matlab 通信系统建模与仿真例题源代码-第二章

% ch2example1prg1.mdt=1e-4; % 仿真采样间隔T=3*1e-3; % 仿真终止时间t=0:dt:T;input=2*cos(2*pi*1000*t); % 输入被调信号carrier=5*cos(2*pi*1e4*t); % 载波output=(2+0.5*input).*carrier; % 调制输出% 作图: 观察输入信号, 载波, 以及调制输出subplot(3,1,1); plot(t,input,'LineWidth',3);xlabel('时间 t');ylabel('被调信号');subplot(3,1,2); plot(t,carrier,'LineWidth',3);xlabel('时间t');ylabel('载波');subplot(3,1,3); plot(t,output,'LineWidth',3);xlabel('时间t');ylabel('调幅输出');% ch2example1prg2.mclear; % 清空内存变量,以避免以往运行的结果影响本程序dt=1e-5; % 仿真采样间隔T=3*1e-3; % 仿真终止时间t=0:dt:T;for k=1:length(t) % 基于时间流的仿真计算input(k)=2*cos(2*pi*1000*t(k)); % 第k个仿真步进时的输入被调信号carrier(k)=5*cos(2*pi*1e4*t(k)); % 第k个仿真步进时的载波output(k)=(2+0.5*input(k)).*carrier(k);% 第k个仿真步进时的调制输出end% 作图: 观察输入信号, 载波, 以及调制输出subplot(3,1,1); plot(t,input,'LineWidth',3);xlabel('时间 t');ylabel('被调信号');subplot(3,1,2); plot(t,carrier,'LineWidth',3);xlabel('时间t');ylabel('载波');subplot(3,1,3); plot(t,output,'LineWidth',3);xlabel('时间t');ylabel('调幅输出');% ch2example1prg3.mdt=1e-6; % 仿真采样间隔T=2*1e-3; % 仿真的帧周期for N=0:500 % 总共仿真的帧数t=N*T+(0:dt:T); % 帧中的取样时刻input=2*cos(2*pi*1005*t); % 输入被调信号carrier=5*cos(2*pi*(1e4)*t+0.1*randn); % 载波output=(2+0.5*input).*carrier; % 调制输出noise=randn(size(t)); % 噪声r=output+noise; % 调制信号通过加性噪声信道% 作图: 观察输入信号, 载波, 以及调制输出subplot(3,1,1); plot([0:dt:T],input,'LineWidth',3);xlabel('时间t');ylabel('被调信号');text(T*2/3,1.5,['当前帧数: N=',num2str(N)]); subplot(3,1,2); plot([0:dt:T],carrier,'LineWidth',3);xlabel('时间 t');ylabel('载波');subplot(3,1,3); plot([0:dt:T],r,'LineWidth',3);xlabel('时间 t');ylabel('调幅输出');set(gcf,'DoubleBuffer','on'); % 双缓冲避免作图闪烁drawnow;end% ch2example1prg25.m% 采用较低速率仿真,并用样条插值使得结果精细化simurate=3000; % 较低仿真速率mysimopts = simset('Solver','ode5'); % 设置仿真求解器为ode5的mysimopts = simset(mysimopts,'FixedStep',1./simurate); % 设置仿真步进timespan=[0, 0.01]; % 仿真时间段参数sim('ch2example25',timespan,mysimopts); % 设置仿真参数,仿真时间段并执行仿真plot(simout.time,simout.signals.values,'o-k');hold on;axis([0 0.005 -2 2]);t=timespan(1):1/30000:timespan(2); % 插值时间序列intp_y=interp1(simout.time,simout.signals.values,t,'spline');% 样条插值plot(t,intp_y,'xr'); % 画出插值结果% 采用较高速率仿真simurate=30000; % 较高仿真速率mysimopts = simset(mysimopts,'FixedStep',1./simurate); % 设置仿真步进sim('ch2example25',timespan,mysimopts); % 设置仿真参数,仿真时间段并执行仿真plot(simout.time,simout.signals.values,'b');% 画出仿真结果legend('较低速率仿真输出波形','样条插值精细化的结果','较高速率仿真输出波形');% ch2example2prg1.mdt=1e-5; % 仿真采样间隔R=1e3; % 电阻值C=1e-6; % 电容量T=5*1e-3; % 仿真区间从 -T 到 +Tt=-T:dt:T; % 计算的离散时刻序列y(1)=0; % 电容电压初始值, 在时间小于零区间将保持不变% 如果要仿真零输入响应, 可设置 y(1)=1 等非零值.% ----输入信号设定:可选择: 零输入,阶跃输入,正弦输入,方波输入等----x=zeros(size(t)); % 初始化输入信号存储矩阵x=1*(t>=0); % 在0时刻的输入信号跃变为1, 即输入为阶跃信号.% 如果要仿真零输入响应, 这里可设 x=0 即可% x=sin(2*pi*1000*t).*(t>=0); % 这是从0时刻开始的1000Hz的正弦信号% x=square(2*pi*500*t).*(t>=0); % 这是从0时刻开始的500Hz的方波信号% 仿真开始, 注意: 设零时刻之前电路不工作, 系统状态保持不变for k=1:length(t)time=-T+k*dt;if time>=0y(k+1)=y(k)+1./(R*C)*(x(k)-y(k))*dt; %递推求解下一个仿真时刻的状态值elsey(k+1)=y(k); % 在时间小于零时设电路断开,系统不工作endendsubplot(2,1,1);plot(t,x(1:length(t)),'LineWidth',3);axis([-T T -1.1 1.1]);xlabel('t');ylabel('input');subplot(2,1,2);plot(t,y(1:length(t)),'LineWidth',3);axis([-T T -1.1 1.1]);xlabel('t');ylabel('output');% ch2example3prg1.mdt=0.0001; % 仿真步进T=15; % 仿真时间长度t=0:dt:T; % 仿真计算时间序列g=9.8; % 重力加速度L=1; % 摆线长度m=10; % 摆锤质量k=5; % 空气阻力比例系数theta0=3.1; % 初始摆角设置v0=0; % 初始摆速设置v=zeros(size(t)); % 程序存储变量预先初始化,可提高执行速度theta=zeros(size(t));v(1)=v0; % 初始值赋值theta(1)=theta0;for n=1:length(t) % 仿真求解开始v(n+1)=v(n)+(g*sin(theta(n))-k./m.*v(n)).*dt;theta(n+1)=theta(n)-1./L.*v(n).*dt;end% 使用双坐标系统来作图, 注意作图和图形标注的技巧[AX,H1,H2] = plotyy(t,v(1:length(t)),t,theta(1:length(t)),'plot'); set(H1,'LineStyle','-'); % 设置作图线型set(H2,'LineStyle','-.');set(get(AX(1),'Ylabel'),'String','线速度 v(t) m/s');% 坐标标注set(get(AX(2),'Ylabel'),'String','角位移 \theta(t) rad ');xlabel('时间 t ');legend(H1,'线速度 v(t)',2);legend(H2,'角位移 \theta(t)',1);% ch2example5prg1.mdt=0.01; % 仿真步进T=15; % 仿真时间长度t=0:dt:T; % 仿真计算时间序列g=9.8; % 重力加速度L=1; % 摆线长度m=10; % 摆锤质量k=5; % 空气阻力比例系数theta0=3.1; % 初始摆角设置v0=0; % 初始摆速设置x0=[v0;theta0]; % 初始状态赋值par=[g;k;m;L]; % 系统参数赋值% 以欧拉算法计算并作图[t_out, x_out]=eulerode('pendulumstateeq',t', x0, [], par);plot(t_out, x_out(:,1),'-.b');hold on;% 以ode45算法计算并作图对比[t_out, x_out]=ode45('pendulumstateeq',t', x0, [], par);plot(t_out, x_out(:,1),'-k');xlabel('时间 t ');ylabel('线速度 m/s');legend('欧拉算法','ode45算法');% ch2example6main.mclear;v0=0; y0=1; % 球的初始状态x_state=[v0,y0];% 将初始状态赋值到状态变量中dt=0.01; % 仿真步进t=0:dt:5; % 仿真时间序列K=0.85; % 碰撞衰减系数for k=1:length(t) % 仿真开始,每次循环向前推进一个仿真步进dtx(k,:)=x_state; % 记录并保存当前状态的计算结果[t_out,x_out]=ode45('ch2example6statefun',[t(k),t(k)+dt],x_state);% 计算下一个时刻的新状态% 可换用ode23、ode113、ode23t、ode15s、ode23s以及ode23tb求解器 x_state=x_out(length(x_out),:); % 更新状态if (x_state(2)<=0) & (x_state(1)<0) % 当速度为负(球向下运动)且已经接触碰撞面x_state(1)=-K*x_state(1); % 处理碰撞瞬间情况:速度反向并衰减Kend% 动画作图:显示小球弹跳过程y=x_state(2); % 小球当前位置subplot(2,1,1);plot(0,y,'o');axis([-2 2 -0.1 1]); % 坐标范围固定set(gcf,'DoubleBuffer','on'); % 双缓冲避免作图闪烁drawnow; % 立即显示作图end% 仿真结束。

Matlab通信系统建模与仿真例题源代码-第五章

Matlab通信系统建模与仿真例题源代码-第五章

% ch5example2prg1.mSNR_in_dB=-10:2:30;SNR_in=10.^(SNR_in_dB./10); % 信道信噪比m_a=0.3; % 调制度P=0.5+(m_a^2)/4; % 信号功率for k=1:length(SNR_in)sigma2=P/SNR_in(k); % 计算信道噪声方差并送入仿真模型sim('ch5example2.mdl');% 执行仿真SNRdemod(k,:)=SNR_out; % 记录仿真结果endplot(SNR_in_dB, SNRdemod);xlabel('输入信噪比dB');ylabel('解调输出信噪比dB');legend('包络检波','相干解调');% ch5example7prog1.mclear;Fs=10000; % 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBs_SSB2=m_t.*carriercos+m_t90shift.*carriersin; % 下边带SSB% 下面作出各波形以及频谱figure(1);subplot(4,2,1); plot(t(1:100),carriercos(1:100),...t(1:100),carriersin(1:100),'--r'); % 载波subplot(4,2,2); plot([0:9999],abs(fft(carriercos))); % 载波频谱axis([0 2000 -500 6000]);subplot(4,2,3); plot(t(1:100),m_t(1:100)); % 基带信号subplot(4,2,4); plot([0:9999],abs(fft(m_t))); % 信号频谱axis([0 2000 -500 6000]);subplot(4,2,5); plot(t(1:100),s_SSB1(1:100)); % SSB波形上边带subplot(4,2,6); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱上边带axis([0 2000 -500 6000]);subplot(4,2,7); plot(t(1:100),s_SSB2(1:100)); % SSB波形下边带subplot(4,2,8); plot([0:9999],abs(fft(s_SSB2))); % SSB频谱下边带axis([0 2000 -500 6000]);% ch5example8prog1.mclear;Fs=10000; % 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBout=s_SSB1.*carriercos; % 相干解调[a,b]=butter(4, 500/(Fs/2)); % 低通滤波器设计4阶,截止频率为500Hz demodsig=filter(a,b,out); % 解调输出% 下面作出各波形以及频谱figure(1);subplot(3,2,1); plot(t(1:100),s_SSB1(1:100)); % SSB波形subplot(3,2,2); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱axis([0 5000 -500 6000]);subplot(3,2,3); plot(t(1:100),out(1:100)); % 相干解调波形subplot(3,2,4); plot([0:9999],abs(fft(out))); % 相干解调频谱axis([0 3000 -500 6000]);subplot(3,2,5); plot(t(1:100),demodsig(1:100)); % 低通输出信号subplot(3,2,6); plot([0:9999],abs(fft(demodsig)));% 低通输出信号的频谱axis([0 3000 -500 6000]);% ch5example8prog2.mclear;Fs=10000; % 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBout=s_SSB1.*cos(2*pi*1018*t+1);% 存在频率误差的相位误差时的相干解调[a,b]=butter(4, 500/(Fs/2)); % 低通滤波器设计4阶,截止频率为500Hz demodsig=filter(a,b,out); % 解调输出% 下面作出各波形以及频谱figure(1);subplot(3,2,1); plot(t(1:100),s_SSB1(1:100)); % SSB波形subplot(3,2,2); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱axis([0 5000 -500 6000]);subplot(3,2,3); plot(t(1:100),out(1:100)); % 相干解调波形subplot(3,2,4); plot([0:9999],abs(fft(out))); % 相干解调频谱axis([0 3000 -500 6000]);subplot(3,2,5); plot(t(1:100),demodsig(1:100)); % 低通输出信号subplot(3,2,6); plot([0:9999],abs(fft(demodsig)));% 低通输出信号的频谱axis([0 3000 -500 6000]);% ch5example9prog1.m[wav,fs]=wavread('GDGvoice8000.wav');t_end=1/fs *length(wav); % 计算声音的时间长度Fs=50000; % 仿真系统采样率t=1/Fs:1/Fs:t_end; % 仿真系统采样时间点% 设计300Hz~3400Hz的带通预滤波器H(z)[fenzi,fenmu]=butter(3,[300 3400]/(fs/2));% 对音频信号进行预滤波wav=filter(fenzi,fenmu,wav);% 利用插值函数将音频信号的采样率提升为Fs=50KHzwav=interp1([1/fs:1/fs:t_end],wav,t,'spline');wav_hilbert=imag(hilbert(wav)); % 音频信号的希尔伯特变换fc=10000; % 载波频率HzSSB_OUT=wav.*cos(2*pi*fc*t)-wav_hilbert.*sin(2*pi*fc*t); % 单边带调制figure(1); % 观察调制前后频谱subplot(2,2,1); plot(wav(53550:53750)); axis([0 200 -0.3 0.3]);subplot(2,2,2); psd(wav, 10000, Fs); axis([0 25000 -20 10]);subplot(2,2,3); plot(SSB_OUT(53550:53750)); axis([0 200 -0.3 0.3]);subplot(2,2,4); psd(SSB_OUT, 10000, Fs); axis([0 25000 -20 10]); wavwrite(0.5*SSB_OUT,Fs,'SSB_OUT.wav'); % 将SSB调制输出存盘备用% ch5example9prog2.mfunction out=ch5example9prog2(in, SNRdB)% SNR_dB设定信噪比% in 输入信号序列% out 信道输出序列Fs=50000; %系统采样率Power_of_in=var(in);Power_of_noise=Power_of_in/(10.^(SNRdB/10));bandwidth=13500-10000; % 信道带宽N0=Power_of_noise/bandwidth; % 噪声功率谱密度值W/HzGauss_noise=sqrt(N0*Fs/2).*randn(size(in));[num, den]=butter(4, [10000 13500]/(Fs/2)); % 带通信道10KHz到13.5KHz signal_of_filter_out=filter(num, den, in);noise_of_filter_out=filter(num, den, Gauss_noise);SNR_dB=10*log10(var(signal_of_filter_out)/var(noise_of_filter_out))% 测量得出的信噪比out=signal_of_filter_out+noise_of_filter_out; % 信道输出% ch5example9prog3.mclear;[recvsignal, Fs]=wavread('Channel_OUT.wav');% 读入信道输出信号数据t=(1/Fs:1/Fs: length(recvsignal)/Fs)';fc_local=10000-200; % 本地载波频率9.8KHzlocal_carrier=cos(2*pi*fc_local.*t); % 本地载波xianggan_out=recvsignal.*local_carrier; % 相干解调[fenzi,fenmu]=butter(3,[300 3400]/(Fs/2)); % 设计300Hz~3400Hz的带通滤波器demod_out=filter(fenzi,fenmu,xianggan_out); % 对相干输出信号进行滤波sound(demod_out/max(demod_out), Fs); % 播放解调音频wavwrite(demod_out,Fs,'SSBDemod_OUT.wav'); % 保存输出信号% ch5example10prog1.mclear;Y=[1:-1/7:0].*255; % 8级灰度N=8; % 8*N 列数S=ones(N,1);Y=S*Y;Y=reshape(Y,1,N*8);% 将矩阵扩大指定列数的一行M=40; % M 行数S=ones(M,1);Y=S*Y; % 重复M次矩阵行,得出图像矩阵I=uint8(Y); % 转换为uint8格式imshow(I); % 显示imwrite(I,'graybar.tif','tif'); % 并保存为图像文件% ch5example11prog1.mclear;I=imread('graybar.tif');% 读入图像(由上例生成)img=double(I')/255; % 转换为双精度数以便计算[M,N]=size(img);for K=1:2for column=K:2:N % K=1扫描奇数行for row=1:Mdot=img(row,column); % 取当前扫描点的灰度值greydot=[dot,dot,dot]; % R,G,B均设置为相同值,即显示灰度plot(row,N-column,'s','MarkerFaceColor',greydot,...'MarkerEdgeColor',greydot,'MarkerSize',6);hold on; % 保持扫描点axis([1,M, 1, N]); % 作图范围set(gcf,'DoubleBuffer','on');% 双缓冲避免作图闪烁drawnow; % 立即作图endendend% ch5example12prg1.mclear;R=zeros(100,100);G=zeros(100,100);B=zeros(100,100);R(1:50,30:100)=255;G(30:100,50:100)=255;B(1:70,1:70)=255; % 三基色产生I(:,:,1)=R;I(:,:,2)=G;I(:,:,3)=B; % 合成为100*100图像矩阵imshow(uint8(I));% 显示% ch5example13prg1.m% 生成400*480彩条图像clear;R=[1 1 0 0 1 1 0 0];G=[1 1 1 1 0 0 0 0];B=[1 0 1 0 1 0 1 0];N=60; % N*8列S=ones(N,1);R=S*R; R=reshape(R,1,N*8);G=S*G; G=reshape(G,1,N*8);B=S*B; B=reshape(B,1,N*8);M=400; % 行数S=ones(M,1);R=S*R; G=S*G; B=S*B; % 得出三基色矩阵I(:,:,1)=R; I(:,:,2)=G; I(:,:,3)=B; % 组合I=uint8(I*255); % 类型转换imshow(I); % 显示并保存imwrite(I,'colorbar.tif','tif');% ch5example14prg1.mclear;I=imread('colorbar.tif');% 或用autumn.tif,sydney.JPG等图像文件figure(1);imshow(I);I=double(I);[m,n,p]=size(I);I=-(0.75-0.125)./(255).*I+0.75; % 换算为0.125到0.75电平R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);% 三基色分离R=reshape(R',1,m*n); % 转换为1维(红)G=reshape(G',1,m*n); % 转换为1维(绿)B=reshape(B',1,m*n); % 转换为1维(蓝)Y=0.30*R+0.59*G+0.11*B;% 亮度R_Y=R-Y; % 色差R0B_Y=B-Y; % 色差B0V=0.877*R_Y; % 色差电平压缩U=0.493*B_Y; % 色差电平压缩f_c=283.5*15625; % 副载波频率tvY=[interp1(Y,(1:n/980:m*n),'nearest')];% 插值:行采样980点tvV=[interp1(V,(1:n/980:m*n),'nearest')];% 插值tvU=[interp1(U,(1:n/980:m*n),'nearest')];% 插值% 全电视信号产生for h=1:(m-2)s(1280*h+(1:102))=0.75; % 消隐脉冲s(1280*h+(103:197))=1; % 行同步头s(1280*h+(198:300))=0.75;% 消隐脉冲s(1280*h+(301:1280))=tvY(h*980+(-1:978));% 图像一行像素-亮度% 色差VsV(1280*h+(1:300))=0; % 消隐部分sV(1280*h+(220:265))=0.12;% 色同步选通sV(1280*h+(301:1280))=tvV(h*980+(-1:978));% 图像信号部分% 色差UsU(1280*h+(1:300))=0;sU(1280*h+(301:1280))=tvU(h*980+(-1:978));endt=0:0.5e-7:0.5e-7*(length(s)-1);% 计算时间点序列,采样率20MHzF_v=sV.*cos(2*pi*f_c.*t); % 色差信号正交调制F_u=sU.*sin(2*pi*f_c.*t);c=F_v+F_u; % 调制输出的色差信号TVsignal=s+c; % 合成彩色电视信号figure(2); plot(t,TVsignal); xlabel('时间');% 彩色电视信号figure(3); plot(t,s); xlabel('时间'); % 亮度信号% 功率谱计算[Pxxcc,F]=psd(c,1e5,2e7);figure(4); plot(F,10*log10(Pxxcc),'g');hold on;% 调制后的色差信号频谱[Pxx,F]=psd(s,1e5,2e7); % FFT长度为1e5点,故频率分辨率100Hz figure(4); plot(F,10*log10(Pxx),'k'); % 亮度信号频谱xlabel('频率Hz');ylabel('功率谱密度dB');% ch5example15prg1.mclear;ch5example14prg1; % 用实例5.14程序产生彩色全电视信号%---带限高斯信道---TVsignal=TVsignal+0.1*randn(size(TVsignal)); % 加入噪声[b,a]=butter(2,5e6/(20e6/2)); % 传输信道带宽5MHzTVsignal=filter(b,a,TVsignal); % 通过带限信道%---接收部分---[b,a]=butter(2,0.5e6/(20e6/2)); % 行同步滤波h_pulse=filter(b,a,TVsignal);h_pulse=h_pulse>0.87; % 行同步脉冲选出。

通信系统建模与仿真实验报告

通信系统建模与仿真实验报告

实验报告哈尔滨工程大学教务处制实验一:低通采样定理和内插与抽取实现一、实验目的用Matlab 编程实现自然采样与平顶采样过程,根据实验结果给出二者的结论;掌握利用MATLAB 实现连续信号采样、频谱分析和采样信号恢复的方法。

二、实验原理1.抽样定理若)(t f 是带限信号,带宽为m ω, )(t f 经采样后的频谱)(ωs F 就是将)(t f 的频谱 )(ωF 在频率轴上以采样频率s ω为间隔进行周期延拓。

因此,当s ω≥m ω时,不会发生频率混叠;而当 s ω<m ω 时将发生频率混叠。

2.信号重建经采样后得到信号)(t f s 经理想低通)(t h 则可得到重建信号)(t f ,即:)(t f =)(t f s *)(t h其中:)(t f s =)(t f ∑∞∞--)(s nT t δ=∑∞∞--)()(s s nT t nT f δ,)()(t Sa T t h c csωπω= 所以:)(t f =)(t f s *)(t h =∑∞∞--)()(s s nT t nT f δ*)(t Sa T c csωπω =πωcs T ∑∞∞--)]([)(s csnT t Sa nT f ω上式表明,连续信号可以展开成抽样函数的无穷级数。

利用MATLAB 中的t t t c ππ)sin()(sin =来表示)(t Sa ,有 )(sin )(πt c t Sa =,所以可以得到在MATLAB 中信号由)(s nT f 重建)(t f 的表达式如下:)(t f =πωcs T ∑∞∞--)]([sin )(s cs nT t c nT f πω我们选取信号)(t f =)(t Sa 作为被采样信号,当采样频率s ω=2m ω时,称为临界采样。

我们取理想低通的截止频率c ω=m ω。

下面程序实现对信号)(t f =)(t Sa 的采样及由该采样信号恢复重建)(t Sa :三、 实验内容已知信号()()990(1)cos 2(10050)m x t m m t π==++∑,试以以下采样频率对信号采样:(a) 20000s f Hz =; (b) 10000s f Hz =; (c)30000s f Hz =,求x(t)信号原信号和采样信号频谱,及用采样信号重建原信号x ’(t)时序图。

通信系统建模与仿真课程设计--基于SIMULINK的基带传输系统的仿真

通信系统建模与仿真课程设计--基于SIMULINK的基带传输系统的仿真

通信系统建模与仿真课程设计--基于SIMULINK的基带传输系统的仿真通信系统建模与仿真课程设计2011 级通信工程专业******** 班级题目基于SIMULINK的基带传输系统的仿真姓名*** 学号*******指导教师胡娟2014年月日1.任务书试建立一个基带传输模型,发送数据为二进制双极性不归零码,发送滤波器为平方根升余弦滤波器,滚降系数为0.5,信道为加性高斯信道,接收滤波器与发送滤波器相匹配。

发送数据率为1000bps 。

(1) 设计接收机采样判决部分,对比发送数据与恢复数据波形,并统计误码率。

(2) 要求观察接收信号眼图,说明眼图意义与影响因素,改变影响眼图的参数,观察是否有变化。

(3) 设计定时提取系统,说明定时提取的原理,观察定时提取脉冲的波形,说明其正确性。

2. 基带系统的理论分析根据Simulink 提供的仿真模块,数字调制系统的仿真可以简化成如图3.2所示的模型:图3. 2数字调制系统仿真框图基带信号 调制器 信 道 解调器 基带信号噪声源图3.4 2-ASK 信号接收系统组成框图根据3.3(a )所示方框图产生2-ASK 信号,并用图3.4(b )所示的相干解调法来解调整个的仿真系统的调制与解调过程为:首先将信号源的输出信号与载波通过相乘器进行相乘,在接收端通过带通滤波器后再次与载波相乘,接着通过低通滤波器、抽样判决器,最后由示波器显示出各阶段波形,并用误码器观察误码率。

在MATLAB下Simulink仿真平台构建了ASK调制与解调仿真电路图如图3-1所示:将信号源的码数率设为1B/S,即频率为1 Hz。

在调制解调系统中,载波信号的频率一般要大于信号源的频率。

信号源频率为1 Hz,所以将载波频率设置为6 Hz,由于在载波参数设置里,频率的单位是rad/sec,所以即为12*pi。

低通滤波器的频带边缘频率与信号源的频率相同,前面设置信号源频率为1 Hz,所以对话框中“Passband edge frequency (rads/sec):”应填“2*pi”。

数字通信系统的建模仿真

数字通信系统的建模仿真

实验二数字通信系统的建模仿真一、实验目的1.了解数字通信系统的建模过程2.了解数字通信系统的仿真过程,并掌握对建模的好坏进行分析二、实验内容设计框图:框图解析:实验中要求用仿真模块来产生二进制数据源,得到数据源后和本地伪随机码相乘来实现对源信号的扩频,完成之后对信号进行极性变换,然后通过BPsk调制经过信道加入噪声之后,再和本地的载波信号相乘实现对信号的解扩之后进行解调得到一个新的信号,并且可以和原始信号进行比较,计算调制解调过程中产生的误码。

实验结果:1)建立一个直接序列扩频体制(默认M序列)观察收发数据波形;并用频谱仪观察原信号、直接序列扩频后的信号频谱、加噪声的信号频谱、解扩后的信号频谱;测试误码率系统设计参数设置:本地二进制产生码源频率设置为100hz,本地M序列产生器设置为2000hz,极性转换设置为2,经过相乘器扩频后到达调制信道,Bpsk每一个码源采样个数设置为400,因为此处的频率是2000.经过高斯白噪声信道加入噪声,SNR可以自由设置(此处设置为20)。

和本地一个频率为300hz,采样时间为2000的单频正弦波相加后进入解调信道之后得到解调后的信号与原信号相比,计算误码率。

实验中各个测量点的图谱如下所示:图一扩频前图二扩频后图三加入噪声图四解扩后图五解调后图六误码率从上面刘附图可以看出,原始信号经过扩频后频率范围增加,再加入信道噪声和干扰后,在图像波形中出现脉冲干扰,因为这里的SNR设置的比较大(20),所以这里的误码率接近为零,当减小SNR的时候,信道噪声增加,误码率就会增加,除此之外,信道时延的大小对误码率的影响也很大。

2)对比以Gold序列、m序列(已做)以及随机整数发生器Random Integer Generator作为直接序列扩频码源的传输性能,观察波形、频谱(扩频后、加噪声后、解扩后、解调后)、误码率,比较分析传输性能这里系统设计大致与1)中的系统相同,只是将本地载波序列的产生模块作调整,m序列已经完成,首先介绍GOLD序列2.1)GOLD序列Gold Sequence Generator用于产生gold的序列,其他参数与M序列时相同,只要将Gold模块的采样时间改为1/2000就好了。

通信系统建模与仿真课程设计

通信系统建模与仿真课程设计

通信系统建模与仿真课程设计1任务书试建立一个2DPSK频带传输模型,产生一段随机的二进制非归零码的基带信号,对其进行2DPSK调制后再送入加性高斯白噪声(AWGN)信道传输,在接收端对其进行2DPSK解调以恢复原信号,观察还原是否成功,改变AWGN信道的信噪比,计算传输前后的误码率,绘制信噪比-误码率曲线,并与理论曲线比较进行说明。

另外,对发送信号和接收信号的功率谱进行估计。

2 二进制差分相移键控(2DPSK )的理论分析二进制差分相移键控常简称为二相相对调相,记为2DPSK 。

它不是利用载波相位的绝对数值传送数字信息,而是用前后码元的相对载波相位值传送数字信息。

所谓相对载波相位是只本码元初相与前一码元初相之差。

调制 :2DPSK 方式即是利用前后相邻码元的相对载波相位值去表示数字信息的一种方式。

例如,假设相位值用相位偏移△φ表示(△φ定义为本码元初相与前一码元初相只差),并设△φ=π→数字信息1,△φ=0→数字信息0,则数字信息序列与2DPSK 信号的码元相位关系可举例表示如如下:数字信息: 0 0 1 1 1 0 0 1 0 12DPSK 信号相位: 0 0 0 π 0 π π π 0 0 π或 π π π 0 π 0 0 0 π π 0差分码可取传号差分码或空号差分码。

其中,传号差分码的编码规则为:b a b n n n 1-⊕=式中:⊗为模二加:b n 1-为 b n 的前一码元,最初的 b n 1-可任意设定差分编码是(码反变换),即把绝对码变换为相对吗;其逆过程成为差分译码(码反变换),即b b a n n n 1-⊕=2PSK 及DPSK 信号的波形如图所示。

2DPSK的产生基本类似于2PSK,只是调制信号需要经过码型变换,将绝对码变为相对码,2DPSK有模拟调制法和键控法,如图:模拟调制法键控法2DPSK信号可以采用相干解调法(极性比较法)和差分相干解调法(相位比较法)。

其解调原理是:先对2DPSK信号进行相干解调,恢复出相对码,再通过码反变换器变换为绝对码,从而恢复出发送的二进制数字信息。

通信系统建模与仿真

通信系统建模与仿真

《电子信息系统仿真》课程设计级电子信息工程专业 _________ 班级题目FM调制解调系统设计与仿真姓名 ___________________ 学号______________指导教师胡娟_________________________二0—年月日内容摘要频率调制(FM)通常应用通信系统中。

FM广泛应用于高保真音乐广播、电视伴音信号的传输、卫星通信和蜂窝电话系统等。

FM调制解调系统设计是对模拟通信系统主要原理和技术进行研究,理解FM系统调制解调的基本过程和相关知识,利用MATLABS成环境下的M文件,编写程序来实现FM调制与解调过程,并分别绘制出基带信号,载波信号,已调信号的时域波形;再进一步分别绘制出对已调信号叠加噪声后信号,非相干解调后信号和解调基带信号的时域波形;最后绘出FM基带信号通过上述信道和调制和解调系统后的误码率与信噪比的关系,并通过与理论结果波形对比来分析该仿真调制与解调系统的正确性及噪声对信号解调的影响。

在课程设计中,系统开发平台为Windows XP使用工具软件为7.0。

在该平台运行程序完成了对FM调制和解调以及对叠加噪声后解调结果的观察。

通过该课程设计,达到了实现FM信号通过噪声信道,调制和解调系统的仿真目的。

了解FM调制解调系统的优点和缺点,对以后实际需要有很好的理论基础。

关键词FM解调;调制;MKTLAB仿真;抗噪性一、M ATLAB 软件简介MATLAB 是由美国mathworks 公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran) 的编辑模式,代表了当今国际科学计算软件的先进水平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通信系统建模与仿真作业
在高斯白噪声的情况下,求2ASK、2PSK、2FSK的误码率。

解答:
(1)、2ASK相干解调误码率理论值与仿真值代码如下:
A=1;
N=10000;
FC=4;
R=100;
SNRdB=0:1:10;
Pe=1/2*erfc(sqrt(0.25*10.^(SNRdB/10)));
semilogy(SNRdB,Pe,'R');hold on;grid on;
n=1:N*R;
xn=randi([0 1],1,N);
wc=sin(n/R*2*pi*FC);
x=wc.*xn(ceil(n/R)); %调制
Vt=sum(0.5*wc([1:R]).^2); %判决门限
for i=1:length(SNRdB)
y=awgn(x,SNRdB(i)-10*log10(R),'measured'); %加高斯白噪声
y=y.*wc;
for j=1:N
yn(j)=sum(y([(j-1)*R+1:j*R]))>Vt;
end
ErrorCount=length(find(xor(xn,yn)));
Pe(i)=ErrorCount/N;
end
semilogy(SNRdB,Pe);
title('2ASK相干解调误码率');
legend('误码率理论值','误码率仿真值');
xlabel('Eb/N0(dB)');
ylabel('误码率');
(2)、2ASK非相干解调误码率理论值与仿真值代码如下:
A=1;
N=10000;
FC=2;
R=64;
SNRdB=0:1:10;
Pe=1/2*exp(-0.25*10.^(SNRdB/10));
semilogy(SNRdB,Pe,'R');hold on;grid on;
n=1:N*R;
xn=randi([0 1],1,N);
wc=sin(n/R*2*pi);
x=wc.*xn(ceil(n/R));%调制
Vt=sum(0.5*wc([1:R]).^2);%判决门限
for i=1:length(SNRdB)
y=awgn(x,SNRdB(i)-10*log10(R),'measured');%加高斯白噪声 for j=1:N
z=y([(j-1)*R+1:j*R]);
z=conv(z,wc([1:R]));
z=abs(hilbert(z));
z=z(R);
yn(j)=z>Vt;
end
ErrorCount=length(find(xor(xn,yn))); Pe(i)=ErrorCount/N;
end
%%打印图形
semilogy(SNRdB,Pe);
title('2ASK非相干解调误码率');
legend('误码率理论值','误码率仿真值'); xlabel('Eb/N0(dB)');
ylabel('误码率');
(3)、2PSK相干解调误码率理论值与仿真值代码如下:
A=1;
N=10000;
FC=4;
R=100;
SNRdB=0:1:10;
Pe=1/2*erfc(sqrt(0.5*10.^(SNRdB/10)));
semilogy(SNRdB,Pe,'R');hold on;grid on;
n=1:N*R;
xn=randi([0 1],1,N);
wc=sin(n/R*2*pi*FC);
x=wc.*xn(ceil(n/R))-wc.*(1-xn(ceil(n/R))); %调制
Vt=0; %判决门限
for i=1:length(SNRdB)
y=awgn(x,SNRdB(i)-10*log10(R),'measured'); %加高斯白噪声 y=y.*wc;
for j=1:N
yn(j)=sum(y([(j-1)*R+1:j*R]))>Vt;
end
ErrorCount=length(find(xor(xn,yn)));
Pe(i)=ErrorCount/N;
end
semilogy(SNRdB,Pe);
title('2PSK相干解调误码率');
legend('误码率理论值','误码率仿真值');
xlabel('Eb/N0(dB)');
ylabel('误码率');
(4)、2FSK相干解调误码率理论值与仿真值代码如下:
A=1;
N=10000;
FC1=4;
FC0=2;
R=100;
SNRdB=0:1:10;
Pe=1/2*erfc(sqrt(0.25*10.^(SNRdB/10)));
semilogy(SNRdB,Pe,'R');hold on;grid on;
n=1:N*R;
xn=randi([0 1],1,N);
wc1=sin(n/R*2*pi*FC1);
wc0=sin(n/R*2*pi*FC0);
x=wc1.*xn(ceil(n/R))+wc0.*(1-xn(ceil(n/R)));%调制
Vt=0; %判决门限
for i=1:length(SNRdB);
y=awgn(x,SNRdB(i)-10*log10(R),'measured'); %加高斯白噪声
y1=y.*wc1;
y0=y.*wc0;
for j=1:N
yn(j)=(sum(y1([(j-1)*R+1:j*R]))-sum(y0([(j-1)*R+1:j*R])))>Vt; end
ErrorCount=length(find(xor(xn,yn)));
Pe(i)=ErrorCount/N;
end
semilogy(SNRdB,Pe);
title('2FSK相干解调误码率');
legend('误码率理论值','误码率仿真值');
xlabel('Eb/N0(dB)');
ylabel('误码率');
(5)、2FSK非相干解调误码率理论值与仿真值代码如下:
A=1;
N=10000;
FC1=4;
FC0=2;
R=100;
SNRdB=0:1:10;
Pe=1/2*exp(-0.25*10.^(SNRdB/10));
semilogy(SNRdB,Pe,'R');hold on;grid on;
n=1:N*R;
xn=randi([0 1],1,N);
wc1=sin(n/R*2*pi*FC1);
wc0=sin(n/R*2*pi*FC0);
x=wc1.*xn(ceil(n/R))+wc0.*(1-xn(ceil(n/R)));%调制
Vt=0;%判决门限
for i=1:length(SNRdB)
y=awgn(x,SNRdB(i)-10*log10(R),'measured');%加高斯白噪声 for j=1:N
z=y([(j-1)*R+1:j*R]);
z1=conv(z,wc1([1:R]));
z1=abs(hilbert(z1));
z1=z1(R);
z0=conv(z,wc0([1:R]));
z0=abs(hilbert(z0));
z0=z0(R);
yn(j)=(z1-z0)>Vt;
end
ErrorCount=length(find(xor(xn,yn)));
Pe(i)=ErrorCount/N;
end
%%打印图形
semilogy(SNRdB,Pe);
title('2FSK非相干解调误码率');
legend('误码率理论值','误码率仿真值'); xlabel('Eb/N0(dB)');
ylabel('误码率');。

相关文档
最新文档