matlab对调制及解调系统的性能仿真.docx
- 文档编号:8246711
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:12
- 大小:109.46KB
matlab对调制及解调系统的性能仿真.docx
《matlab对调制及解调系统的性能仿真.docx》由会员分享,可在线阅读,更多相关《matlab对调制及解调系统的性能仿真.docx(12页珍藏版)》请在冰豆网上搜索。
matlab对调制及解调系统的性能仿真
通讯系统原理课程设计
设计题目:
调制/解调系统的设计
姓名:
杨旭乾
院(系):
电子信息工程
专业:
电气及其自动化
指导老师:
柴西林
日期:
2010年12月
一设计目的:
通过MATLAB软件实现模拟调制/解调。
二摘要:
根据调制信号的不同,可将调制分为模拟调制和数字调制。
模拟调制的输入信号为连续变化的模拟量,数字调制的调制信号是离散的数字量。
在对调制进行仿真模拟有带通的和基带的两种选择。
带通仿真的载波信号包含于传输模型中。
由于载波信号的频率远高于输入信号,根据抽样定理,抽样频率必须至少大于两倍的载波频率才能正确地恢复信号,因此对高频信号的模拟仿真效率低、速度慢。
为了加速模拟仿真,一般使用基带仿真,也称为低通对等方法。
基带仿真使用带通信号的复包络
关键字:
MATLAB基带调制与解调带通模拟调制与解调
三所需MATLAB函数:
在MATLAB的函数库中,每一个通带调制/解调函数也有一个基带调制/解调函数与其对应:
基带函数 带通函数 函数功能
amod amodce 模拟调制
ademod ademod 模拟调制
dmod ddemod 数字调制
ddemod ddemod 数字调制
modmap modmap 数字映射
demodmap demodmap 数字逆映射
其中可选用的模拟调制/解调方式为'DSB-SCAM' ,'DSB-TCAM','SSBAM','QAM','FM'和'PM';可选的数字调制/解调,数字映射/逆映射的方式为'ASK' ,'QASK','QASK/CIRCLE','QASK/ARB','FSK','PSK'和'sample'。
sample函数可以改变输入数据的抽样速率,是一种支持调制技术的应用。
四带通模拟调制与解调
模拟调制通常分为:
幅度调制(AM)、频率调制(FM)和相位调制(PM)。
幅度调制又可分为常规幅度调制(AM)、抑制双边带幅度调制(DSB-AM)、抑制单边带幅度调制(SSB-AM)和正交幅度调制(QAM)等。
解调就是从调制信号中提取消息信号。
解调过程与利用何种解调方式有关。
在模拟调制的仿真中包含两个频率:
载波频率fc和仿真的采样频率fs。
这里我们主要用matlab进行正交幅度调制与解调的仿真
正交幅度调制(QAM)调制信号为:
其中mI(t)为同相信号,mQ(t)为正交信号,fc是载波频率(单位赫兹Hz),是初始相位。
正交幅度调制过程如图所示。
对应的解调过程如图
正交幅度调制框图正交幅度调制的解调框图
带通模拟调制/解调函数:
(1)带通模拟调制函数amod()
格式:
y=amod(x,Fc,Fs,method…)
功能:
用载波为Fc(Hz)的信号来调制模拟信号x,采样频率为Fs(Hz),Fc>Fs。
变量Fs可以是标量也可以为一个二维的矢量。
二维矢量中第一个值为采样频率,第二个值为调制载波的初相,初相以弧度表示,默认值为0。
根据采样定理,采样频率必须大于或等于调制信号最高频率的两倍。
(2)带通模拟解调函数ademod()
格式:
z=ademod(y,Fc,Fs,method...)
功能:
对载波为Fc的调制信号y进行解,采样频率Fs,Fc>Fs。
它是amod函数的逆过程,amod与ademod选择的调制方式必须相同,否则不容易正确复制出源信号。
该函数在解调中用到一个低通滤波器,低通滤波器传输函数的分子、分母由输入参数num、den指定,低通滤波器的采样时间等于1/Fs。
当num=0或缺省时,函数使用一个默认的巴特沃斯低通滤波器,可由[num,den]=butter(5,Fc*2/Fs)生成。
五基带调制与解调
基带仿真,也称低通对等方法,使用带通信号的复包络作为输入信号。
设B为原始信号带宽,基带仿真要求仿真抽样率大于或等于2B,而一般的有B< 基带调制器的输出为复数信号,作为基带解调器的输入 ●相干解调 接收信号z(t)的同相和正交分量为: 其中fc和分别是载波信号的频率和相位。 利用z(t)的估值可以恢复信号u(t) ●非相干解调 非相干解调可以应用于DSB-SCAM、DSB-TCAM、FM和PM。 对于AM调制,非相干解调可以使用包络检测法。 1.基带模拟调制函数amodce() 格式: y=amodce(x,Fs,method,···) 功能: 对输入信号x进行调制,输出复包络信号。 输入输出的采样频率为Fs(Hz)。 输出y为一个复矩阵。 Fs可以是标量也可以为二维的矢量。 二维矢量中第一个值为采样频率,第二个值为载波信号的初相,初相以弧度表示,默认值为0。 字符串变量method指定所用的调制方式 2.基带模拟解调函数ademodce() 格式: z=ademodce(y,Fs,method…) 功能: 对接收的复包络信号y进行解调,y的采样频率为Fs(Hz)。 Fs可为标量也可以为二维矢量。 矢量中第一个值为采样频率,第二个值为调制载波的初相,初相为弧度表示,且默认值为0。 采样频率必须与调制中所用的采样频率一致,但初相可以不一致。 函数在解调中可使用低通滤波器,低通滤波器传输函数的分子、分母分别由输入参数num和den指定,低通滤波器的采样时间为1/Fs秒。 当num=0或缺省时,该函数将不使用低通滤波器。 字符串变量method指定所用的调制方式 六使用MATLAB模拟信号调制与解调。 1.带通调制与解调MATLAB程序如下: Fs=100;%采样频率 Fc=15;%载波频率 t=0: 0.025: 2;%采样时间 x=sin([pi*t',2*pi*t']);%信号 y=amod(x,Fc,Fs,'qam');%正交幅度调制 z=ademod(y,Fc,Fs,'qam');%正交幅度解调 plot(t,x(: 1),'-',t,z(: 1),'--')%绘制调制信号 hold;plot(t,x(: 2),'-o',t,z(: 2),'--*')%绘制调制信号 matlab仿真后效果图 2.基带调制解调MATLAB程序: Fs=100;%信号采样频率 t=[0: 1/Fs: 5]';%信号采样时间 x=[sin(2*pi*t),.5*cos(5*pi*t),sawtooth(4*t)];%输入信号原 y=amodce(x,Fs,'fm');%调制 z=ademodce(y,Fs,'fm');%解调 subplot(2,1,1);plot(x);%绘制源信号 subplot(2,1,2);plot(z);%绘制调制解调后的信号 程序运行得到的信号源和解调信号的波形图: 附录: MATLAB程序 %绘制调制波形00101010 clearall; Ts=1/16000;%基带信号周期为1/16000s,即为16KHz Tb=1/32000;%输入信号周期为Ts/2=1/32000s,即32KHz BbTb=0.5;%取BbTb为0.5 Bb=BbTb/Tb;%3dB带宽 Fc=32000;%载波频率为32KHz F_sample=64;%每载波采样64个点 B_num=8;%基带信号为8个码元 B_sample=F_sample*Fc*Tb;%每基带码元采样点数B_sample=Tb/Dt Dt=1/Fc/F_sample;%采样间隔 t=0: Dt: B_num*Tb-Dt;%仿真时间 T=Dt*length(t);%仿真时间值 Ak=[00101010];%产生8个基带信号 Ak=2*Ak-1; gt=ones(1,B_sample);%每码元对应的载波信号 Akk=sigexpand(Ak,B_sample);%码元扩展 temp=conv(Akk,gt);%码元扩展 Akk=temp(1: length(Akk));%码元扩展 tt=-2.5*Tb: Dt: 2.5*Tb-Dt; %g(t)=Q[2*pi*Bb*(t-Tb/2)/sqrt(log (2))]-Q[2*pi*Bb*(t+Tb/2)/sqrt(log (2))]; %Q(t)=erfc(t/sqrt (2))/2; gausst=erfc(2*pi*Bb*(tt-Tb/2)/sqrt(log (2))/sqrt (2))/2-erfc(2*pi*Bb*(tt+Tb/2)/sqrt(log (2))/sqrt (2))/2; J_g=zeros(1,length(gausst));%使J_g的长度和Gausst的一样 fori=1: length(gausst) ifi==1 J_g(i)=gausst(i)*Dt; else J_g(i)=J_g(i-1)+gausst(i)*Dt; end; end; J_g=J_g/2/Tb; %计算相位Alpha Alpha=zeros(1,length(Akk)); k=1; L=0; forj=1: B_sample J_Alpha=Ak(k+2)*J_g(j); Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2; end; k=2; L=0; forj=1: B_sample J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample); Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2; end; k=3; L=0; forj=1: B_sample J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample); Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2; end; k=4; L=0; forj=1: B_sample J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample); Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2; end; L=0; fork=5: B_num-2 ifk==5 L=0; else L=L+Ak(k-3); end; forj=1: B_sample J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample)+Ak(k-2)*J_g(j+4*B_sample); Alpha((k-1)*B_sample+j)=pi*J_Alpha+mod(L,4)*pi/2; end; end; %B_num-1; k=B_num-1; L=L+Ak(k-3); forj=1: B_sample J_Alpha=Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample)+Ak(k-2)*J_g(j+4*B_sample); Alpha((k-1)*B_sample+j)=pi*J_Alpha+mod(L,4)*pi/2; end; %B_num; k=B_num; L=L+Ak(k-3); forj=1: B_sample J_Alpha=Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample)+Ak(k-2)*J_g(j+4*B_sample); Alpha((k-1)*B_sample+j)=pi*J_Alpha+mod(L,4)*pi/2; end; S_Gmsk=cos(2*pi*Fc*t+Alpha); subplot(311) plot(t/Tb,Akk); axis([08-1.51.5]); title('基带波形'); subplot(312) plot(t/Tb,Alpha*2/pi); axis([08min(Alpha*2/pi)-1max(Alpha*2/pi)+1]); title('相位波形'); subplot(313) plot(t/Tb,S_Gmsk); axis([08-1.51.5]); title('GMSK波形'); %解调 forn=1: 512; ifn<=B_sample Alpha1(n)=0; elseAlpha1(n)=Alpha(n-B_sample); end end a=[01111111] ak=sigexpand(a,B_sample);%码元扩展 temp=conv(ak,gt);%码元扩展 ak=temp(1: length(ak)); S_Gmsk1=cos(2*pi*Fc*(t-Tb)+Alpha1+pi/2).*ak;%延迟1bt,移相pi/2 figure subplot(311) plot(t/Tb,S_Gmsk1); axis([08-1.51.5]); title('延迟1bt,移相pi/2GMSK波形'); xt=S_Gmsk1.*S_Gmsk; x=0; subplot(312) plot(t/Tb,xt,t/Tb,x,'r: '); axis([08-1.51.5]); title('相乘后波形'); %低通滤波 Fs=10000; rp=3;rs=50; wp=2*pi*50;ws=2*pi*800; [n,wn]=buttord(wp,ws,rp,rs,'s') [z,p,k]=buttap(n); [bp,ap]=zp2tf(z,p,k); [bs,as]=lp2lp(bp,ap,wn); [b,a]=bilinear(bs,as,Fs) y=filter(b,a,xt); subplot(313) plot(t/Tb,y,t/Tb,x,'r: '); axis([08-1.51.5]); title('经过低通滤波器后波形'); fori=1: 8 ify(i*B_sample)>0 bt(i)=1 else bt(i)=0 end end bt=2*bt-1; btt=sigexpand(bt,B_sample);%码元扩展 temp1=conv(btt,gt);%码元扩展 btt=temp1(1: length(btt));%码元扩展 figure subplot(311) plot(bt) title('抽样值'); axis([08-1.51.5]); subplot(312) plot(t/Tb,Akk); axis([08-1.51.5]); title('原基带波形'); subplot(313) plot(t/Tb,btt); axis([08-1.51.5]); title('解调后波形'); 以下代码是上面的sigexpand函数的m文件的代码 function[out]=sigexpand(d,M) N=length(d); out=zeros(M,N); out(1,: )=d; out=reshape(out,1,M*N); 七心得体会 通信原理是电子信息工程通信方向最主要的专业课程之一,通过在课堂上对理论知识的学习,我们了解到现代通信的基本方式以及其原理。 然而,如何将理论在实践中得到验证和应用,是我们学习当中的一个问题。 而通过本次课程设计,我们在强大的MATLAB平台上对数字信号的传输系统进行了一次仿真,有效的完善了学习过程中实践不足的问题,同时进一步巩固了原先的基础知识。 通过这次的课程设计,我们对信息和通信系统有了更进一步的认识,尤其是在系统设计方面,尽管是非常基础的2ASK调制与解调的传输,也是经过若干设备协同工作,才能保证信号有效传输,而小到仅仅是一个参数,都有可能导致整个系统无法正常运行。 另一方面,我们通过本次的课程设计,着实领教了MATLAB矩阵实验室强大的功能和实力。 通过在SIMULINK环境下对系统进行模块化设计与仿真,使我们获得两方面具体经验,第一是MATLAB中SIMULINK功能模块的使用方法,第二是图形化和结构化的系统设计方法。 这些经验虽然并不高深,但是对于刚入门的初学者来说,对以后步入专业领域进行设计或研发无疑具有重大的意义。 自从因特网把我们领进信息时代开始,人类的历史翻开了璀璨的一页。 随着信息的飞速发展,通信原理也随之崛起。 从而,使得培养新世纪的技术人才显得分外重要。 在学习通信原理理论基础后,我们又在此基础上通过利用MATLAB仿真真正的看到了通信中传输信息的一系列的问题。 比如说要使信号不失真的能够传输到接收端就要考虑很多的因数。 在发送端要注意噪声的加入,尽量的减少噪声进入信道中,以免在接收端使信号失真度过大而不能够恢复成原来的信号。 而在接收端,采用哪种解调方式能够更好的恢复出原来的信号。 这次的课程设计使我收益颇丰,对通信原理有了新的认识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 调制 解调 系统 性能 仿真