大家好,又见面了,我是你们的朋友全栈君。
文章目录
基于MATLAB的AM调制解调
摘要 现在的社会越来越发达,科学技术不断的在更新,在信号和模拟电路里面经常要用到调制与解调,而AM的调制与解调是最基本的,也是经常用到的。用AM调制与解调可以在电路里面实现很多功能,制造出很多有用又实惠的电子产品,为我们的生活带来便利。在我们日常生活中用的收音机就是采用了AM调制的方式,而且在军事和民用领域都有十分重要的研究课题。现用MATLAB中M文件实现本课程设计内容“基于MATLAB的AM调制解调实现”。在课程设计中,系统开发平台为Windows XP,MTALAB 2007,程序设计语言采用MATLAB 2007,程序运行平台为MATLAB 2007。通过MATLAB编写程序并加以调试能够实现AM的调制与调解,完成了课程设计的目标,并经过适当完善后,将可以在实际中应用。
关键词 MATLAB;AM;调制解调
引言
模拟调制技术在20世纪中曾有较大的应用,如军事通信、短波通信、模拟移动通信、模拟调频广播和模拟调幅广播等。虽然现在通信的发展趋势为数字化,但数字技术并不能完全替代模拟技术,而且模拟调制技术是通信理论的基本知识。模拟信号的载波调制电路里面经常要用到调制与解调,而AM的调制与解调是最基本的,也是经常用到的,为了进一步了解模拟调幅,展现MATLAB中M文件程序设计优势,本课程设计将在MATLAB中用M文件实现AM调制解调的程序设计。
课程设计目的
本课程设计课题主要研究基于MATLAB的AM调制解调实现的理论设计和软件仿真方法。掌握模拟系统AM调制解调的原理;掌握AM调制解调模拟系统的理论设计方法;掌握应用MATLAB分析系统时域、频域特性的方法,进一步锻炼应用MATLAB进行编程仿真的能力。
课程设计要求
熟悉MATLAB中M文件的使用方法,并在掌握AM调制解调原理的基础上,编写AM
调制解调程序。绘制出AM信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对AM信号解调原理的理解。对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。
课程设计步骤
(1)给定一个调制信号mes,载波信号Uc,并设计AM调制解调相关参数。
(2)分别绘制出调制信号和载波信号的波形图和频谱图。
(3)使用modulate()函数对mes信号进行调制。
(4)使用demod()函数解调已调信号Uam。
(5)使用awgn()函数对已调信号Uam加入噪声,观察加入噪声后对信号的影响。
AM调制解调原理
AM调制原理
AM是调幅,用AM调制与解调可以在电路里面实现很多功能,制造出很多有用又实惠的电子产品,为我们的生活带来便利。在我们日常生活中用的收音机就是采用了AM调制方式,而且在军事和民用领域都有十分重要的研究课题。
AM是指对信号进行幅度调制。在传送信号的一方将所要传送的信号附加在高频上,再由天线发射出去。高频震荡波就是携带信号的运载工具,也叫载波。振幅调制,就是由调制信号去控制高频载波的振幅,直至随调制信号做线性变化。仿真图如下:
AM解调原理
调制的逆过程叫解调,调制是一个频谱搬移过程,它是将低频信号的频谱搬到载频位置。从已调信号的频谱中,将位于载频的信号频谱搬移回来。调制和解调都完成频谱搬移,各种调幅都是利用乘法器实现的。
仿真过程实现
AM 信号的产生
为了产生AM信号,我写了下面部分的代码:
fc=120; %载波信号频率
fm=30; %调制信号频率
Fs=960; %采样频率
w0=2*fc*pi;
w1=2*fm*pi;
Uc=A0*cos(w0*t); %载波信号
mes=1+A1*cos(w1*t); %调制信号
Uam=modulate(mes,fc,Fs,'am'); %AM已调信号
C3=fft(Uam); %对已调信号进行傅里叶变换
asd=abs(C3); % 求模
fm为调制信号频率、A0为载波信号振幅、A1为调制信号振幅、mes是调制信号、fc为载波信号频率。Uam为已调信号。
调制信号是来自信源的调制信号,这些信号是模拟的。高频振荡信号又称载波,是正弦信号。载波由高频信号源直接产生,然后经过高频功率放大器进行放大,作为调幅波的载波,调制信号有低频信号源直接产生,给出以上参数后,在MATLAB中通过modulate()函数得到AM信号Uam。再通过fft()函数和abs()函数对AM信号进行傅里叶变换及求模,得到AM信号的频谱。
载波信号的波形与频谱图,调制信号的波形与频谱图,已调信号的波形与频谱图如下。
上图显示了载波信号的时域波形图和频谱图。图中横坐标表示载波持续时间,纵坐标表示载波幅值。从图中可知本次调制使用的载波幅度为1。
上图还显示了载波信号的频谱图。图中横坐标表示频率,纵坐标表示信号频谱幅值。从图中可以明显看出载波频谱的频率为120Hz。
上图显示了调制信号的时域波形图和频谱图。图中的横坐标和纵坐标分别对应表示时间和信号幅度值。从图中可以明显看出调制信号为余弦信号。
上图还显示了调制信号的频谱图。图中的横坐标和纵坐标分别对应表示频率和频谱幅值。从图中可以明显看出调制信号的频谱为30Hz。
上图显示了系统中经过AM调制后信号的时域波形图和频谱图。图中横坐标和纵坐标分别对应表示时间和信号幅值。
上图还显示了经历调制后信号所对应的频谱。频谱图中横坐标代表频率,纵坐标代表频谱幅值。从图中可知原发送信号经过调制后,频谱明显从原来的低频部分搬移到载波部分。
AM解调实现
给为对信号进行解调,我写了下面部分的代码:
Dam=demod(Uam,fc,Fs,'am'); % 对信号进行解调
C4=fft(Dam); % 对解调信号进行傅里叶变换
wqe=abs(C4); % 求模
fc为载波信号频率,Fs为采样频率,Uam为已调信号,在MATLAB中通过demod()函数对已调信号进行解调,得到Dam。并对Dam解调信号进行傅里叶变换和求模,再绘制出相应的波形图。解调信号的波形与频谱图如下:
上图显示了系统中经过AM解调信号的时域波形图和频谱图。图中横坐标和纵坐标分别对应表示时间和信号幅值。解调将已调信号复原了,信号波形与调制信号波形完全吻合,没有出现失真。
上图还显示了解调后信号所对应的频谱。频谱图中横坐标代表频率,纵坐标代表频谱幅值。可以看出解调后信号频谱回到了原始频率,没有失真。
叠加噪声的AM解调
在实际信号传输过程中,通信系统不可能避免的会遇到噪声。这次设计使用的加性高斯白噪声。加性高斯白噪声是最基本的噪声和干扰模型。加性噪声是叠加在信号上的一种噪声,而且无论有无信号,噪声都始终存在,因此通常称它为加性噪声或者加性干扰。白噪声的噪声功率谱密度在所有的频率上均为一常数。如果白噪声取值的概念服从高斯分布,则称这样的噪声为高斯白噪声。通过在信道中叠加噪声,并绘制出相应的波形与频谱图,并与原始信号进行比较,分析噪声对信号的影响。
下面程序是在AM信号叠加噪声,并对叠加后的信号进行解调:
加大噪声,信噪比为1:
k=awgn(Uam,1); %加大噪声,信噪比为1
pp=fft(k,300); %进行傅里叶变换
zs=abs(pp); %求模
qaz=demod(k,fc,Fs,'am'); %加大噪声后解调
wsx=fft(qaz,300); %进行傅里叶变换
edc=abs(wsx); %求模
加小噪声,信噪比为20:
d=awgn(Uam,20); %加小噪声,信噪比为20
op=fft(d,300); %进行傅里叶变换
mm=abs(op); %求模
vb=demod(d,fc,Fs,'am'); %加小噪声后解调
fg=fft(vb,300); %进行傅里叶变换
ty=abs(fg); %求模
上图是加大噪声后AM信号波形图与频谱图,图中横坐标和纵坐标分别对应表示时间和信号幅值。可以看出加噪声后对信号有很大的影响,最原始的波形表现的不是很明显。
上图还显示了解调后信号所对应的频谱。频谱图中横坐标代表频率,纵坐标代表频谱幅值。虽然噪声对频率有明显的影响,但是中心频率还是没有变,出现了失真。
上图是加大噪声后解调信号波形图与频谱图,图中横坐标和纵坐标分别对应表示时间和信号幅值。可以看出解调后噪声依然对信号有影响,也出现了失真。
上图还显示了解调后信号所对应的频谱。频谱图中横坐标代表频率,纵坐标代表频谱幅值。噪声对频率的影响很大,出现了失真,但是中心频率还是没有变。
上图是加小噪声后AM信号波形图与频谱图,图中横坐标和纵坐标分别对应表示时间和信号幅值。可以看出加噪声后对信号有一定的影响,但影响不大,基本可以看出原始波形。
上图还显示了解调后信号所对应的频谱。频谱图中横坐标代表频率,纵坐标代表频谱幅值。噪声对频率的影响很小,而且中心频率也没有变,失真很小。
上图是加小噪声后解调信号波形图与频谱图,图中横坐标和纵坐标分别对应表示时间和信号幅值。可以看出解调后噪声依然对信号有影响,也出现了一些失真,但基本可以看出原波形。
上图还显示了解调后信号所对应的频谱。频谱图中横坐标代表频率,纵坐标代表频谱幅值。解调将频率搬回到原频率,噪声对频率的影响很小,出现了一些失真,但是中心频率还是没有变。
从加入噪声的几幅图可以看出不同功率的噪声对信号的影响不同,噪声功率越大,对信号的影响也越大。
遇到的问题及解决办法
开始对MATLAB这款软件的使用不是很熟悉,连.m文件不会建,弄不清楚fft(),abs()函数是干什么用的,不知道figure(),subplot()是怎么实现图形输出,自己便把以前MATLAB的教材拿出来看,以及上网查和问老师和同学才弄明白。自己在进行AM调制与解调时是用的乘法,这样做容易出错,而且导致程序特别长,将简单问题复杂化了。老师提示可以用modulate()函数进行调制,于是自己去看老师发在网络教学平台的资料以及在MATLAB中输入help modulate()才解决,并通过调用函数demod()函数实现了信号的解调。调制信号开始没有加直流分量,导致调制时频谱不对,缺少原信号的频率。后面给调制信号加上一个直流分量,得到正确结果。在进行调制时是用的Uam=modulate(mes,fc,Fs,‘am’),解调时用的Dam=demod(Uam,fc,Fs,‘amssb’); 这行语句,这样解调波形可以出来,但是有错误,发现是调制与解调设置的参数不对,把解调时的语句改为Dam=demod(Uam,fc,Fs,‘am’);后能出现正常波形。在加噪声是d=Uam+awgn(Uam,20);没有正确的使用awgn()函数,将表达式改为d=awgn(Uam,20);,这样得到的波形图才是正确的。
结束语
本设计的主题是基于MATLAB的AM调制解调实现,第二章中队AM调制解调原理进行了理论分析。第三章中根据第二章的理论以及MATLAB的特点,对调制信号进行了调制与解调,最后通过程序得出的仿真结果和理论结果进行比较与分析。
本设计开始给定30Hz的调制信号和120Hz的载波,对AM波进行调制与解调。并在已调AM信号上叠加噪声,对信号进行解调。再将之与原始信号进行比较,了解AM信号的抗噪声性能。
在开始的时候,自己毫无头绪,不知道该怎么做,在网上找了很多资料,找一份相似的代码就试一下,一心只想着早点做出来交差,但是越想早点做出来,越是做不好,在网上也没有找到合适的代码。老师要检查我们的任务进度的时候就找了一份最相似的代码给老师看,自己也没有认真的去理解,结果犯了一些很低级的错误,在一个模拟信号的仿真中居然还出现了数字信号。老师给我讲解了一下我这个课题该怎么去做,于是自己顺着老师讲解的思路去做。自己先运行网上找的几个相似的代码,对着代码、仿真图去理解代码,有不懂的地方就看以前MATLAB的书以及上网查和向已经完成的同学寻求帮助。发现自己的课题没有想象中的那么难,只是自己没有用心去做。自己开始尝试写代码,其实也就是MATLAB中几个函数就能解决问题。沉下心来自己做,最后将课程设计做了出来。虽然效果不是很好,但也是自己用做的。本次课程设计,自己对AM信号调制解调有很更深刻的理解,能更熟练的使用MATLAB这款软件。也认识到学习要脚踏实地,自己认真去对待,沉下心来做,有些困难并不没有那么难。也感谢老师和同学的帮助。
AM解调程序清单
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136216.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...