单边带信号调制与解调MATLAB.docx
- 文档编号:12592122
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:25
- 大小:736.82KB
单边带信号调制与解调MATLAB.docx
《单边带信号调制与解调MATLAB.docx》由会员分享,可在线阅读,更多相关《单边带信号调制与解调MATLAB.docx(25页珍藏版)》请在冰豆网上搜索。
单边带信号调制与解调MATLAB
单边带信号调制与解调-MATLAB
MATLAB中用M文件实现SSB解调
一、课程设计目的
本次课程设计是对通信原理课程理论教学和实验教学的综合和总结。
通过这次课程设计,使同学认识和理解通信系统,掌握信号是怎样经过发端处理、被送入信道、然后在接收端还原。
要求学生掌握通信原理的基本知识,运用所学的通信仿真的方法实现某种传输系统。
能够根据设计任务的具体要求,掌握软件设计、调试的具体方法、步骤和技巧。
对一个实际课题的软件设计有基本了解,拓展知识面,激发在此领域中继续学习和研究的兴趣,为学习后续课程做准备。
二、课程设计内容
(1)熟悉MATLAB中M文件的使用方法,掌握SSB信号的解调原理,以此为基础用M文件编程实现SSB信号的解调。
(2)绘制出SSB信号解调前后在时域和频域中的波形,观察两者在解调前后的变化,通过对分析结果来加强对SSB信号解调原理的理解。
(3)对信号分别叠加大小不同的噪声后再进行解调,绘制出解调前后信号的时域和频域波形,比较未叠加噪声时和分别叠加大小噪声时解调信号的波形有何区别,借由所得结果来分析噪声对信号解调造成的影响。
(4)在老师的指导下,独立完成课程设计的全部内容,并按要求编写课程设计论文,文中能正确阐述和分析设计和实验结果。
三、设计原理
1、SSB解调原理
在单边带信号的解调中,只需要对上、下边带的其中一个边带信号进行解调,就能够恢复原始信号。
这是因为双边带调制中上、下两个边带是完全对称的,它们所携带的信息相同,完全可以用一个边带来传输全部消息。
单边带解调通常采用相干解调的方式,它使用一个同步解调器,即由相乘器和低通滤波器组成。
在解调过程中,输入信号和噪声可以分别单独解调。
相干解调的原理框图
时间t0=0.5s,滤波器截止频率fl=700Hz,频率分辨率df=0.1Hz。
在求频谱函数时,我调用了一个自己设定的函数“fft_seq”,它是对快速傅立叶变换函数fft的改进。
它通过提高频率分辨率,能更好地区分两个谱峰。
若设信号m的长度为T秒,则其频率分辨率为
=1/T(Hz)。
因为输入计算机中的连续信号被转换成了离散的序列,而设其序列共有N个点,则两根谱线间的距离
=fs/N,它也是频率分辨率的一种度量。
如果该式的
不够小,我们可以增加N来减小
。
而一种有效的方法是在离散序列后面补零,这不会破坏原来的信号。
函数“fft_seq”就是基于以上思想编成。
我在MATLAB中实现SSB解调的仿真就是基于以上的程序和参数设定,运行调用了plot函数的M文件,可以分别得出解调前后的频域与时域对比图,为了便于参照,将LSSB信号的时域与频域图也一同进行比较。
三者时域图比较结果如图b所示:
图b调制信号、LSSB信号、解调信号的时域对比图
由图b可以看出,解调信号能够基本还原原始基带信号,只有少许失真,可见解调过程较为成功。
对于失真接问题接下来将会进行具体分析。
为了更好分析解调的结果,还必须将时域图与频域图进行比较,通过观察频域图能够更为直观的了解信号的频率分布,借此来讨论滤波器的作用特性。
三者的频域图比较如图c所示:
图c调制信号、LSSB信号、解调信号的频域对比图
由频域图可以明显地看出,下边带信号将基带信号的频谱向两侧进行了搬移,然后去除了其中上边带的那一半。
而解调后的频谱与基带信号在频率小于700Hz的范围内几乎没有区别,用肉眼很难观察出不同之处;解调信号在频率大于700Hz范围外的频谱已经被低通滤波器完全滤除,故没有波形,这就是解调信号与基带信号频谱差异最明显之处。
由于在理论上,解调过程可以完全恢复基带信号,但实际中仍然会产生少许失真,故失真的原因可以从参数的设置上入手找寻。
在解调过程中,相乘器是严格按照数学关系运算的,不会产生误差,失真的产生因该在低通滤波器环节。
为了探究低通滤波器的设置对解调的影响,我将滤波器的截止频率fl分别改为1000Hz和50Hz进行比较,根据结果来判断原因。
首先我选fl=1000Hz,它等于2fc,它应该无法滤除混频信号中的2
分量。
实际得出的时域和频域图结果如图d和图e:
图dfl=1000Hz时的解调信号时域对比图
图efl=1000Hz时的解调信号频域对比图
从时域比较图中可以明显看出解调信号严重失真,还保留着载波信号的频率变化;而频谱图中,解调信号频谱的两侧将近1000Hz处有两个高峰,可见解调信号频谱与基带信号频谱存在巨大差异。
原因很简单,低通滤波器的截止频率高于2fc,故无法滤除相乘器输出的混频信号y的高频2
分量,完全没有起到低通滤波的作用,所以解调信号保留有高频分量,无法正确还原调制信号。
接下来将截止频率fl设为50Hz,观察在fl较低的情况下的解调输出结果。
此时,fl远远小于2fc,不存在无法滤除高频分量的问题,不会产生上一种情况的错误。
通过分析这种情况下的结果可以得出低截止频率对解调的影响。
在fl=50Hz时得出的时域和频域解调结果对比如图f和图g所示:
图ffl=50Hz时解调信号时域对比图
图gfl=50Hz时解调信号频域对比图
由时域比较图中可以清晰地看出解调信号能够保持平滑的余弦波形,但幅度小了将近一倍,且两端的幅度明显小于中间。
由此可以估计出一种可能性:
基带信号的一部分丢失了,解调信号只是原基带信号的一部分。
因此才会造成幅度下降的结果。
频谱对比图很好地验证了这种可能性。
观察发现解调信号的频谱被滤去频率大于50Hz的部分之后,虽然保持了原基带信号的主体部分,但两边的分量已经全部滤除。
这就是问题所在。
两边的分量也占据了一定的比重,滤除的越多,原基带信号损失的部分也越多,就如时域图中所示。
幅度减小的原因就在于此。
通过在fl=50Hz时对解调信号频域和时域的观察,可以得出结论:
fl较低时,在滤去高频2
分量的同时,也会连带去除基带信号中的一部分。
因此为了保全基带信号的完整性,fl不宜过低。
综上所述,截止频率fl过高时会导致高频2
分量无法滤除;而fl较低,又会使得基带信号有部分被滤去。
经过调整分析,我认为fl应该在能够滤去2
分量的情况下,尽可能高一点。
这样就能保证基带信号被滤去的部分减到最少。
所以开始所设的fl=700Hz是一个较为合适的值,解调结果也很接近基带信号。
实现解调还有一种方法,就是调用专用于SSB信号解调的函数ssbdemod(u,fc,fs),此函数内部集成了解调过程,不需要自行再设置相乘器与滤波器。
为了与前一种方法对比,现简要用此函数来实现SSB的解调。
为了增强对比性,除了fl无需再设置外,其它的参数设置均与上一种方法相同:
采样频率fs=2500Hz,信号保持时间t0=0.5s,频率分辨率df=0.1Hz,且调制信号不变。
在本程序中,实现调制过程使用语句“u=ssbmod(m,fc,fs);”,解调单边带信号则用“y=ssbdemod(u,fc,fs);”来实现。
运行本程序,所得基带信号、LSSB信号、解调信号的时域图对比情况如图h所示:
图h方法2中基带、LSSB、解调信号的时域对比图
解调信号通过MATLAB中函数ssbdemod()实现了解调并通过函数本身内设的低通滤波器,解调出了基带信号m(t)。
解调后的信号基本与基带信号相同,只是边缘处有少许失真。
再观察三者的频域比较如图i所示:
图i方法2中基带、LSSB、解调信号的频域对比图
由频域图中可以看出,解调信号的频谱与基带信号很接近,不包含相乘器输出的混频信号中的高频2
分量,也没采用第一种方法中设定截止频率,将高于一定频率的部分完全滤除的做法。
但仔细观察可以发现,解调信号中分布在频率较高处的波形比相同频率处的基带信号波形起伏更大一些,这应该是本解调方式的缺陷,会造成一定误差。
在时域图中的解调信号边缘失真的情况或许来源于此。
这种方法不用自己设置滤波器,程序简单,在实现解调时较为简便。
前一种方法可以根据自己的需要调整滤波器的截止频率,从而得到更精确的解调信号。
这两种解调方式可谓各有千秋。
3、叠加噪声时的SSB解调
在实际信号传输过程中,通信系统不可避免的会遇到噪声,例如自然界中的各种电磁波噪声和设备本身产生的热噪声、散粒噪声等,它们很难被预测。
而且大部分噪声为随机的高斯白噪声,所以在设计时引入噪声,才能够真正模拟实际中信号传输所遇到的问题,进而思考怎样才能在接受端更好地恢复基带信号。
信道加性噪声主要取决于起伏噪声,而起伏噪声又可视为高斯白噪声,因此我在此环节将对单边带信号添加高斯白噪声来观察噪声对解调的影响情况。
为了具体而全面地了解噪声的影响问题,我将分别引入大噪声(信噪比为3dB)与小噪声(信噪比为30dB)作用于单边带信号,再分别对它们进行解调,观察解调后的信号受到了怎样的影响。
在此过程中,我用函数“awgn(x,snr,'measured')”来添加噪声,此函数功能为向信号x中添加信噪比为snr的高斯白噪声。
其中的一个参数'measured'的功能是在叠加噪声前先测量信号x的功率,再根据所测结果来产生所设信噪比的噪声。
具体实现语句为:
snr1=3;
snr2=30;
s1=awgn(lssb,snr1,'measured');
s2=awgn(lssb,snr2,'measured');
其中snr1表示大信噪比,snr2表示小信噪比,s1表示叠加大噪声后的信号,s2表示叠加小噪声后的信号。
再通过以下傅立叶变换程序来求出它们的频谱图:
[S1,s1,dfl]=fft_seq(s1,ts,df);
S1=S1/fs;
[S2,s2,dfl]=fft_seq(s2,ts,df);
S2=S2/fs;
为了便于比较,我先显示了下边带信号加入两种噪声后的时频波形图,再将基带信号、叠加大噪声后的解调信号以及叠加小噪声后的解调信号放在一起,分别比较三者的时域与频域图。
运行程序,求得下边带信号加入两种噪声后的时频波形图如图j所示:
图j下边带信号加入两种噪声后的时频波形比较图
基带信号、叠加大噪声后的解调信号以及叠加小噪声后的解调信号三者之间的时域对比图如图k所示:
图k基带信号、叠加大小噪声后解调信号的时域对比图
基带信号、叠加大噪声后的解调信号以及叠加小噪声后的解调信号三者之间的频域对比图如图l所示:
图l基带信号、叠加大小噪声后解调信号的频域对比图
由图i可知,首先下边带信号因为叠加噪声而发生了变化。
再进一步观察图1中的时域变化:
当叠加大噪声时,解调波形出现明显的紊乱,产生了很多不规则的毛刺杂波,与基带信号相去甚远;而叠加小噪声时,波形图只是局部稍有不平滑现象,总体还是与未加噪声时的解调信号相同,出入不大。
再比较图k中各频谱之间的关系,可以清晰地看出,加大噪声后,解调信号的频谱波形两边杂乱无章,起伏远大于未加噪声时的波形;而加小噪声后,解调信号频谱基本与未加噪声时一致,看不出明显变化。
造成此现象的原因是当信噪比较小时,噪声的功率在解调信号中所占比重较大,所以会造成杂波较多的情况;而信噪比很大时,噪声的功率在解调信号中所占比重就很小了,噪声部分造成的杂乱波形相对就不是很明显,甚至可以忽略。
综上所述,叠加噪声会造成解调信号的失真,信噪比越小,失真程度越大。
所以当信噪比低于一定大小时,会给解调信号带来严重的失真,导致接收端无法正确地接收有用信号。
所以在解调的实际应用中,应该尽量减少噪声的产生。
4、遇到的问题及解决办法
我在该课程设计中曾遇到过一些问题,具体如下:
其一是频谱显示问题。
起初我得出的频谱显示波形并非是频率为0点居中,而是0点在最左端。
这样不利于我观察频谱特性,为了能让频谱图居中显示,我对程序设置进行分析,发现关键在于频率矢量的设置上。
起初所设置的值f=(0:
length(U)-1)*fs/length(U),不能将图形显示在0Hz两边,经过改进为f=(0:
length(U)-1)*fs/length(U)-fs/2,使得频谱居中显示成功。
其中-fs/2就是将图形向右搬移半个长度,这样0点就能居中了。
其二是滤波器截止频率fl的设置问题。
开始我将截止频率设置为fl=50Hz,但仿真结果显示解调信号的幅度明显小于基带信号。
这说明基带信号没有完全被还原,有部分损失。
经分析我认为是滤波器的截止频率太低,将基带信号的成分也滤去了一些。
然而滤波器的截止频率也不宜过大,这样会使它无法滤除混频信号中的2
高频分量。
对于其合适的参数我进行了多次测试,力求在可以滤去2
高频分量的情况下使解调信号损失最小。
最终我发现将fl设为700Hz较为合理,解决了此问题。
四、老师的问题
1、SSB信号是如何得到?
有两种方法得到SSB信号,分别是相移法和滤波法,本次设计用的是相移法。
2、SSB信号是如何解调的?
是用相干解调实现的,在解调的实现中,我先用下边带调制信号乘以本地载波,再通过低通滤波器滤除高频成分,如此便得到了解调后的信号。
用数学表达式可以表示为
3、哪些语句是生成噪声的?
我用函数“awgn(x,snr,'measured')”来添加噪声,此函数功能为向信号x中添加信噪比为snr的高斯白噪声。
其中的一个参数'measured'的功能是在叠加噪声前先测量信号x的功率,再根据所测结果来产生所设信噪比的噪声。
具体实现语句为:
snr1=3;
snr2=30;
s1=awgn(lssb,snr1,'measured');
s2=awgn(lssb,snr2,'measured');
五、总结
在这次课程设计中,我通过多方面地搜集资料,对SSB的解调原理进行深入理解分析,成功地用MATLAB7.1编写出M程序完成了对SSB解调过程的仿真实现。
在设计过程中,我面对着一系列的难点:
将MATLAB与通信原理结合起来运用,根据书中介绍的解调原理自主设计所要运用的器件并调整其参数,对解调信号结合理论进行分析并总结,掌握产生具有一定信噪比的高斯白噪声的方法,等等。
这些具体的问题在书上只有少量的理论介绍,要在实际运用中结合这些理论是一件不太容易的事。
接到课程设计任务书后,我积极投入,去图书馆借阅相关资料,上网浏览相关信息,获得了大量的信息,为完成本次课程设计奠定了基础。
对于MATLAB我开始还有许多未解之处,为了了解各个函数的用法,我多次查阅了其中的help文件,大体了解了所调用函数的使用方法。
然后通过不断的实验与探究总结,终于逐个克服了这些难点,完成了任务。
通过这次的实践,我明白了要将理论与实际相结合的道理,尽管这个过程会有一些辛苦,但通过努力实现后,就能大大深化我对知识的理解程度,增长实践经验。
这表现在我对SSB的解调原理、MATLAB的功能特性都有了进一步的认识。
总之,我在本次课程设计中辛苦不少,获益良多。
参考文献
[1]东方渔民.无线电广播与收音机发展的历史回眸——纪念费森登发明无线电广播100周年.广播之家网站,
[2]樊昌信,张甫翊,徐炳祥,吴成柯.国防工业出版社,2007.
[3]孙学军,王秉均.通信原理.电子工业出版社,2005.
[4]孙祥,徐流美,吴清.MATLAB7.0基础教程.北京:
清华大学出版社2006.
[5]张辉,曹丽娜.现代通信原理与技术.西安:
电子科技大学出版社,2007.
[6]唐向宏,岳恒立,邓雪峰.MATLAB及在电子信息类课程中的应用.电子工业出版社,2006.
附录1:
SSB解调程序方法1清单
%程序名称:
ssb.m
%程序功能:
自行设计解调器实现SSB解调
%=====================
t0=0.05;%信号保持时间
ts=1/2500;%采样时间间隔
fc=500;%此为载波频率
fs=1/ts;%此为抽样频率
fl=700;%滤波器的截止频率
df=0.1;%频率分辨率
snr1=3;
snr2=30;
t=[0:
ts:
t0];%时间矢量
m=cos(2*pi*50.*t);%原始信号
c=cos(2*pi*fc.*t);%载波信号
b=sin(2*pi*fc.*t);%载波信号对应的正弦信号
lssb=m.*c+imag(hilbert(m)).*b;%下边带信号
s1=awgn(lssb,snr1,'measured');
s2=awgn(lssb,snr2,'measured');
y=lssb.*c;%下边带的混频
y1=s1.*c;%加大噪声后混频
y2=s2.*c;%加小噪声后混频
[M,m,dfl]=fft_seq(m,ts,df);%傅里叶变换求原始信号频谱
M=M/fs;%缩放
[LSSB,lssb,dfl]=fft_seq(lssb,ts,df);%傅里叶变换求下边带信号频谱
LSSB=LSSB/fs;%缩放
[S1,s1,dfl]=fft_seq(s1,ts,df);%求下边带信号加大噪声的频谱
S1=S1/fs;%缩放
[S2,s2,dfl]=fft_seq(s2,ts,df);%求下边带信号加小噪声的频谱
S2=S2/fs;%缩放
[Y,y,dfl]=fft_seq(y,ts,df);%傅里叶变换得出混频频谱
Y=Y/fs;%缩放
[Y1,y1,dfl]=fft_seq(y1,ts,df);%傅里叶变换得出混频频谱
Y1=Y1/fs;%缩放
[Y2,y2,dfl]=fft_seq(y2,ts,df);%傅里叶变换得出混频频谱
Y2=Y2/fs;%缩放
n_cutoff=floor(fl/dfl);%设计滤波器
f=[0:
dfl:
dfl*(length(m)-1)]-fs/2;%频率矢量
H=zeros(size(f));
H(1:
n_cutoff)=2*ones(1,n_cutoff);
H(length(f)-n_cutoff+1:
length(f))=2*ones(1,n_cutoff);
DEM=H.*Y;%滤波器输出(即解调后信号)频谱
DEM1=H.*Y1;%滤波器输出(即加大噪声解调后信号)频谱
DEM2=H.*Y2;%滤波器输出(即加小噪声解调后信号)频谱
dem=real(ifft(DEM))*fs;%滤波器输出(即解调后)信号
dem1=real(ifft(DEM1))*fs;%滤波器输出(即大噪声解调后)信号
dem2=real(ifft(DEM2))*fs;%滤波器输出(即小噪声解调后)信号
figure
(1);
subplot(3,1,1);plot(t,m(1:
length(t)));%显示调制信号
title('调制信号');
subplot(3,1,2);plot(t,lssb(1:
length(t)));%显示下边带信号
title('下边带信号');
subplot(3,1,3);plot(t,dem(1:
length(t)));%显示解调信号
title('解调信号');
figure
(2);
subplot(3,1,1);plot(f,abs(fftshift(M)));%显示调制信号频谱
title('调制信号频谱');
subplot(3,1,2);plot(f,abs(fftshift(LSSB)));%显示下边带信号频谱
title('下边带信号频谱');
subplot(3,1,3);plot(f,abs(fftshift(DEM)));%显示解调信号频谱
title('解调信号频谱');
figure(3);
subplot(3,2,1);plot(t,lssb(1:
length(t)));%显示下边带信号
title('下边带信号');
subplot(3,2,2);plot(f,abs(fftshift(LSSB)));%显示下边带信号频谱
title('下边带信号频谱');
subplot(3,2,3);plot(t,s1(1:
length(t)));%显示加大噪声后下边带信号
title('加大噪声后下边带信号');
subplot(3,2,4);plot(f,abs(fftshift(S1)));%显示加大噪声后下边带信号频谱
title('加大噪声后下边带信号频谱');
subplot(3,2,5);plot(t,s2(1:
length(t)));%显示加小噪声后下边带信号
title('加小噪声后下边带信号');
subplot(3,2,6);plot(f,abs(fftshift(S2)));%显示加小噪声后下边带信号频谱
title('加小噪声后下边带信号频谱');
figure(4);
subplot(3,1,1);plot(t,dem(1:
length(t)));%显示解调信号
title('解调信号');
subplot(3,1,2);plot(t,dem1(1:
length(t)));%显示加大噪声解调信号
title('加大噪声解调信号');
subplot(3,1,3);plot(t,dem2(1:
length(t)));%显示加小噪声解调信号
title('加小噪声解调信号');
figure(5);
subplot(3,1,1);plot(f,abs(fftshift(DEM)));%显示解调信号频谱
title('解调信号频谱');
subplot(3,1,2);plot(f,abs(fftshift(DEM1)));%显示加大噪声解调信号频谱
title('加大噪声解调信号频谱');
subplot(3,1,3);plot(f,abs(fftshift(DEM2)));%显示加小噪声解调信号频谱
title('加小噪声解调信号频谱');
附录2:
傅立叶变换函数清单
%程序名称:
fft_seq.m
%程序功能:
傅立叶变换函数
%=====================
function[M,m,df]=fft_seq(m,ts,df)%定义函数
fs=1/ts;%采样频率
ifnargin==2,n1=0;%设计函数功能
else,n1=fs/df;
end
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);
m=[m,zeros(1,n-n2)];%对m补零
df=fs/n;%最终频率分辨率
附录3:
SSB解调程序方法2清单
%程序名称:
ssb2.m
%程序功能:
调用函数ssbdemod实现SSB解调
%=====================
t0=0.05;%信号保持时间
ts=1/2500;%采样时间间隔
fc=500;%此为载波频率
fs=1/ts;%此为抽样频率
df=0.1;%频率分辨率
t=[0:
ts:
t0];%时间矢量
m=cos(2*pi*50.*t);%原始信号
u=ssbmod(m,fc,fs);%调制
y=ssbdemod(u,fc,fs);%解调
[M,m,dfl]=fft_seq(m,ts,df);%傅里叶变换求原始信号频谱
M=M/fs;%缩放
[U,u,dfl]=fft_seq(u,ts,df);%傅
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单边 信号 调制 解调 MATLAB