当前位置:文档之家› 通信原理实验报告2

通信原理实验报告2

通信原理实验报告课程名称:通信原理实验三:二进制数字信号调制仿真实验实验四:模拟信号数字传输仿真实验姓名:学号:班级:2012年12 月实验三二进制数字信号调制仿真实验一、实验目的1.加深对数字调制的原理与实现方法;2.掌握OOK、2FSK、2PSK功率谱密度函数的求法;3.掌握OOK、2FSK、2PSK功率谱密度函数的特点及其比较;4.进一步掌握MATLAB中M文件的调试、子函数的定义和调用方法。

二、实验内容1. 复习二进制数字信号幅度调制的原理2. 编写MATLAB程序实现OOK调制;3. 编写MATLAB程序实现2FSK调制;4. 编写MATLAB程序实现2PSK调制;5. 编写MATLAB程序实现数字调制信号功率谱函数的求解。

三、实验原理在数字通信系统中,需要将输入的数字序列映射为信号波形在信道中传输,此时信源输出数字序列,经过信号映射后成为适于信道传输的数字调制信号。

数字序列中每个数字产生的时间间隔称为码元间隔,单位时间内产生的符号数称为符号速率,它反映了数字符号产生的快慢程度。

由于数字符号是按码元间隔不断产生的,经过将数字符号一一映射为响应的信号波形后,就形成了数字调制信号。

根据映射后信号的频谱特性,可以分为基带信号和频带信号。

通常基带信号指信号的频谱为低通型,而频带信号的频谱为带通型。

调制信号为二进制数字基带信号时,对应的调制称为二进制调制。

在二进制数字调制中,载波的幅度、频率和相位只有两种变化状态。

相应的调制方式有二进制振幅键控(OOK/2ASK)、二进制频移键控(2FSK)和二进制相移键控(2PSK)。

下面分别介绍以上三种调制方法的原理,及其MATLAB实现:本实验研究的基带信号是二进制数字信号,所以应该首先设计MATLAB程序生成二进制数字序列。

根据实验一的实践和第一部分的介绍,可以很容易的得到二进制数字序列生成的MATLAB程序。

假定要设计程序产生一组长度为500的二进制单极性不归零信号,以之作为后续调制的信源,并求出它的功率谱密度,以方便后面对已调信号频域特性和基带信号频域特性的比较。

整个过程可用如下程序段实现:%定义相关参数clear all;close all;A=1fc=2; %2Hz;N_sample=8;N=500; %码元数Ts=1; %1 Baud/sdt=Ts/fc/N_sample; %波形采样间隔t=0:dt:N*Ts-dt;Lt=length(t);%产生二进制信源 d=sign(randn(1,N));%dd=sigexpand((d+1)/2,fc*N_sample); N1=length((d+1)/2);dd=zeros(fc*N_sample,N1); dd(1,:)=(d+1)/2;dd=reshape(dd,1,fc*N_sample*N1); gt=ones(1,fc*N_sample);%NRZ 波形 figure(1)subplot(221);%输入NRZ 信号波形(单极性) d_NRZ=conv(dd,gt);plot(t,d_NRZ(1:length(t)));axis([0 10 0 1.2]); ylabel ('输入信号'); subplot(222);%输入NRZ 频谱 dt=t(2)-t(1); T=t(end); df=1/T;N=length(d_NRZ(1:length(t))); f=-N/2*df:df:N/2*df-df;d_NRZf=fft(d_NRZ(1:length(t))); d_NRZf=T/N*fftshift(d_NRZf);plot(f,10*log10(abs(d_NRZf).^2/T));axis([-2 2 -50 10]);ylabel('输入信号功率谱密度(dB/Hz)');3.2 OOK 调制二进制振幅键控(OOK/2ASK)是利用载波的幅度变化来传递数字信息的,而其频率和初始相位保持不变。

在2ASK 中,载波的幅度只有两种变化状态,分别对应二进制信息“0”和“1”。

2ASK 信号的一般表达式为:()t t s t e c ωcos )(2ASK =其中,∑-=n s n nT t g a t s )()(。

所以,要进行OOK 调制,定义完二进制数字序列和载波参量后,将之相乘即可。

相关的MATLAB 指令如下:ht=A*cos(2*pi*fc*t); s_2ask=d_NRZ(1:Lt).*ht; subplot(223) plot(t,s_2ask);axis([0 10 -1.2 1.2]); ylabel('OOK');要对OOK 调制之前与之后信号的频域特性进行比较,可以通过比较两者的功率谱密度曲线来实现。

也就是求出OOK 调制信号s_2ask 的功率谱密度函数,并将之与3.1中求得的基带信号的功率谱密度函数进行比较。

根据《通信原理》的学习,可以知道,求解某信号功率谱密度的过程就是先求出该信号的傅立叶变换,再求该傅立叶变换的幅值的绝对值的平方的过程。

如何求功率谱密度函数在实验二中已经详细介绍过了,本处不再赘述。

根据前面的介绍,我们已经知道要求得某信号的傅立叶变换,可以通过调用实验一附录中的T2F 子函数实现,也可以直接编程实现。

实验二中使用的都是子函数调用的方式,下面给出直接编程实现傅立叶变换的MATLAB 程序:dt=t(2)-t(1); T=t(end); df=1/T;N=length(s_2ask);f=-N/2*df:df:N/2*df-df; s_2askf=fft(s_2ask);s_2askf=T/N*fftshift(s_2askf); subplot(224)plot(f,10*log10(abs(s_2askf).^2/T)); axis([-fc-4 fc+4 -50 10]);ylabel('OOK 功率谱密度(dB/Hz )');通过以上程序,我们将基带信号波形及其功率谱密度曲线,OOK 调制信号及其功率谱密度曲线分别画在了同一个图的四个子图中,以方便对调制前后信号的频域特性进行比较。

3.3 2FSK 调制频移键控是利用载波的频率的变化来传递数字信息的。

在2FSK 中,载波的频率随二进制基带信号在f 1和f 2两个频率点间变化。

故其表达式为:⎩⎨⎧++=”时发送“”时发送“0),cos(A 1),cos(A )(212FSK n n t t t e θωϕω《通信原理》中已经介绍过,2FSK 信号的调制可通过两个方法实现,一是将2FSK 信号理解为两路不同频率的ASK 信号相加的结果;二是将2FSK 信号表示成如下的形式:()cos(22())C n S n s t A f t h a g t nT ππ∞=-∞=+-∑第一种方法实现起来相当简单,直接参照3.2中ASK 信号的产生方法,产生两路不同频率的ASK 信号,将之相加即可得到2FSK 信号,这种方法留待同学们课后自己实现。

下面我们介绍用第二种方法产生2FSK 信号的MATLAB 程序设计过程。

首先,为了使2FSK 信号不至覆盖了前面产生的信号,新建一个图,其指令为: figure(2)然后,在这个图上画2FSK 信号的波形,及其功率谱密度曲线波形。

%2FSK%s_2fsk=A*cos(2*pi*fc*t+int(2*d_NRZ-1)); sd_2fsk=2*d_NRZ-1;s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t)).*t); subplot(223) plot(t,s_2fsk);axis([0 10 -1.2 1.2 ]); xlabel('t'); ylabel('2FSK') subplot(224)求出2FSK 调制信号的功率谱密度函数:%[f,s_2fsk]=T2F(t,s_2fsk); dt=t(2)-t(1); T=t(end); df=1/T;N=length(s_2fsk);f=-N/2*df:df:N/2*df-df; s_2fsk=fft(s_2fsk);s_2fsk=T/N*fftshift(s_2fsk);plot(f,10*log10(abs(s_2fsk).^2/T)); axis([-fc-4 fc+4 -50 10]);xlabel('f'); ylabel('2FSK 功率谱密度(dB/Hz)');3.4 2PSK 调制相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。

以载波的不同相位直接去表示相应二进制数字信号的调制方式,称为二进制绝对相移键控(2PSK)。

其时域表达式为:)cos(A )(2PSK n c t t e ϕω+=与2ASK 信号的产生方法相比较,2PSK 和2ASK 只是对s(t)的要求不同,在2ASK 中s(t)是单极性的,而在2PSK 中s(t)是双极性的基带信号。

除此之外,所有的设计流程都是相似的。

参考程序如下:%2PSK 信号d_2psk=2*d_NRZ-1;s_2psk=d_2psk(1:Lt).*ht; subplot(221) plot(t,s_2psk);axis([0 10 -1.2 1.2]); ylabel('2PSK'); subplot(222)求出2PSK 调制信号的功率谱密度函数:%[f,s_2pskf]=T2F(t,s_2psk); dt=t(2)-t(1); T=t(end); df=1/T;N=length(s_2psk);f=-N/2*df:df:N/2*df-df; s_2pskf=fft(s_2psk);s_2pskf=T/N*fftshift(s_2pskf);plot(f,10*log10(abs(s_2pskf).^2/T)); axis([-fc-4 fc+4 -50 10]);ylabel('PSK 功率谱密度(dB/Hz )'); 四、实验内容(1)按照如上介绍的方法,分别产生一组长度为500的二进制单极性不归零信号和归零信号,存档名为Q3_1。

并求分别求出它们的功率谱密度。

请写出相应的MATLAB 程序,将不归零信号波形及功率谱和归零信号波形及功率谱分别画在同一图形的四个子图中,将结果图保存,贴在下面的空白处。

程序:clear all;close all;A=1fc=2; %2Hz;N_sample=8;N=500; %码元数Ts=1; %1 Baud/sdt=Ts/fc/N_sample; %波形采样间隔t=0:dt:N*Ts-dt;Lt=length(t);%产生二进制信源d=sign(randn(1,N));%dd=sigexpand((d+1)/2,fc*N_sample);N1=length((d+1)/2);dd=zeros(fc*N_sample,N1);dd(1,:)=(d+1)/2;dd=reshape(dd,1,fc*N_sample*N1);gt=ones(1,fc*N_sample);%NRZ 波形gt2=ones(1,fc*N_sample/2)%RZboxing/////figure(1)subplot(221);%输入NRZ信号波形(单极性)d_NRZ=conv(dd,gt);plot(t,d_NRZ(1:length(t)));axis([0 10 0 1.2]); ylabel ('输入信号');subplot(222);%输入NRZ频谱dt=t(2)-t(1);T=t(end);df=1/T;N=length(d_NRZ(1:length(t)));f=-N/2*df:df:N/2*df-df;d_NRZf=fft(d_NRZ(1:length(t)));d_NRZf=T/N*fftshift(d_NRZf);plot(f,10*log10(abs(d_NRZf).^2/T));axis([-2 2 -50 10]);ylabel('输入信号功率谱密度(dB/Hz)');%/////////subplot(223);%输入NRZ信号波形(单极性)d_RZ=conv(dd,gt2);plot(t,d_RZ(1:length(t)));axis([0 10 0 1.2]); ylabel ('输入信号');subplot(224);%输入NRZ频谱dt=t(2)-t(1);T=t(end); df=1/T;N=length(d_RZ(1:length(t))); f=-N/2*df:df:N/2*df-df;d_RZf=fft(d_RZ(1:length(t))); d_RZf=T/N*fftshift(d_RZf);plot(f,10*log10(abs(d_RZf).^2/T));axis([-2 2 -50 10]);ylabel('输入信号功率谱密度(dB/Hz)'); 图形:05100.51输入信号-2-1012-40-200输入信号功率谱密度(d B /H z )5100.51输入信号-2-112-40-200输入信号功率谱密度(d B /H z )ZX AND LZ(2)对刚才产生的长度为500的不归零波形对载波频率为2Hz ,幅度为1的余弦信号进行OOK 调制,并求出调制信号的功率谱密度。

相关主题