基于MATLAB的模拟信号AM、FM等调制与解调

一、模拟调制

1 幅度调制
1.1标准调幅
1.2抑制载波双边带调幅
1.3单边带调幅
1.4残留边带调幅
1.5幅度调制的解调
2 角度调制
2.1调频
2.2调相
2.3解调

一、幅度调制
由各种信源产生的基带信号并不能在大多数信道中直接传输,而是需要通过调制后在送到信道中。在接收端就必须通过相反的过程,即解调。
调制是使信号m(t)控制载波的某一个(或几个)参数,使这个参数按照信号m(t)的规律变化的过程。载波可以是正弦波或者脉冲序列。
以正弦波信号作为载波的调制叫做连续波(CW)调制。
连续波调制分为线性调制和非线性调制两大类,线性调制是指调制后信号(已调信号)的频谱为调制信号(基带信号)频谱的平移及线性变换,而非线性调制是已调信号与输入信号之间不存在这种对应关系,已调信号频谱中将出现与调制信号无关的分量。
连续波调制可分为调幅调频和调相。
1.1标准调幅(常规双边带调幅)
信源:
在这里插入图片描述
载波:
在这里插入图片描述
已调信号:
在这里插入图片描述
功率谱:调幅波的总功率等于信号的均方值
在这里插入图片描述
例子:设信源和载波分别为
在这里插入图片描述
求AM调制信号和调制信号功率谱密度。

% AM调制
dt=0.001;%时间采样间隔
fmax=1;  %信源最高频率
fc=10;   %载波频率
T=5;     %信号时长
N=T/dt;  %采样点数
t=[0:N-1]*dt %采样时间
mt=sqrt(2)*cos(2*pi*fmax*t)%信源
%AM_modulation
A=2;
s_am=(A+mt).*cos(2*pi*fc*t);

%power spectrum density 功率谱密度
[f,Xf]=FFT_SHIFT(t,s_am); %调制信号频谱,这里调用了编写的FFT_SHIFT()函数
PSD=(abs(Xf).^2)/T %调制信号功率谱密度

figure
subplot(211);plot(t,s_am)%AM信号波形
hold on;
plot(t,A+mt,'r--');    %AM包络
title('AM调制信号及其包络')
xlabel('t');
subplot(212);plot(f,PSD)%AM信号功率谱波形
axis([-2*fc 2*fc 0 1.5*max(PSD)]);
title('AM调制信号功率谱')
xlabel('f');

调用的FFT_SHIFT()函数

function[f,sf]=FFT_SHIFT(t,st)
dt=t(2)-t(1);
T=t(end);
df=1/T;
N=length(st);
f=[-N/2:N/2-1]*df;
sf=fft(st);
sf=T/N*fftshift(sf);

在这里插入图片描述
1.2抑制载波双边带调幅
在AM信号中,载波分量并不携带信息,信息完全由边带传送,如果将载波抑制,不附加直流分量,就可以直接得到抑制载波双边带信号,简称双边带信号(DSB),其时间波形的表示式为:在这里插入图片描述
抑制载波双边带调幅实质上就是调制信号与载波的相乘运算。
注意:抑制载波双边带调幅信号的时间波形的包络已经不再与调制信号的形状一致,因此不能直接用简单的包络检波来恢复信号。
例子:信源和载波的表达式不变,求DSB—SC调制信号和功率谱密度。

%DSB调制
dt=0.001;%时间采样间隔
fmax=1;  %信源最高频率
fc=10;   %载波频率
T=5;     %信号时长
N=T/dt;  %采样点数
t=[0:N-1]*dt %采样时间
mt=sqrt(2)*cos(2*pi*fmax*t)%信源
%DSB_modulation
s_dsb=mt.*cos(2*pi*fc*t);

%power spectrum density 功率谱密度
[f,sf]=FFT_SHIFT(t,s_dsb); %调制信号频谱,这里调用了编写的FFT_SHIFT()函数
PSD=(abs(sf).^2)/T %调制信号功率谱密度

%plot DSB and PSD
figure
subplot(211);plot(t,s_dsb)%DSB信号波形
hold on;
plot(t,mt,'r--');    %DSB包络
title('DSB调制信号及其包络')
xlabel('t');
subplot(212);plot(f,PSD)%DSB信号功率谱波形
axis([-2*fc 2*fc 0 1.5*max(PSD)]);
title('DSB调制信号功率谱')
xlabel('f');

在这里插入图片描述
1.3单边带调幅
注意:任何物理上可实现信号的频谱都是在这里插入图片描述
的偶函数。
单边带调幅只传送双边带信号的一个边带,因此它比AM、DSB信号带宽较少了一半,提高了信道利用率。
形成单边带信号可以通过滤波法和相移法。
滤波法就是让双边带信号通过一个单边带滤波器,滤除不要的边带。
关于希尔伯特变换的介绍:
https://blog.csdn.net/qq_37431083/article/details/103399465
https://www.cnblogs.com/xingshansi/articles/6498913.html
利用hilbert函数可以计算实序列x[k]的Hilbert变换
y=hilbert(x)
y的实部是原序列x,对于实部是没有影响的,而虚部是x的Hilbert变换的结果,y称为解析信号。
例子:信源和载波的表达式不变,求SSB调制信号和功率谱密度。

%DSB调制
dt=0.001;%时间采样间隔
fmax=1;  %信源最高频率
fc=10;   %载波频率
T=5;     %信号时长
N=T/dt;  %采样点数
t=[0:N-1]*dt %采样时间
mt=sqrt(2)*cos(2*pi*fmax*t)%信源
%SSB_modulation
s_ssb=real(hilbert(mt).*exp(j*2*pi*fc*t));%求的是上边带功率谱
% s_ssb=mt.*cos(2*pi*fc*t)+imag(hilbert(mt)).*sin(2*pi*fc*t);%求得是下边带功率谱
% s_ssb=imag(hilbert(mt).*exp(j*2*pi*fc*t));%求的是上边带功率谱

%power spectrum density 功率谱密度
[f,sf]=FFT_SHIFT(t,s_ssb); %调制信号频谱,这里调用了编写的FFT_SHIFT()函数
PSD=(abs(sf).^2)/T %调制信号功率谱密度

%plot SSB and PSD
figure
subplot(211);plot(t,s_ssb)%SSB信号波形
hold on;
plot(t,mt,'r--');    %SSB包络
title('SSB调制信号及其包络')
xlabel('t');
subplot(212);plot(f,PSD)%SSB信号功率谱波形
axis([-2*fc 2*fc 0 1.5*max(PSD)]);
title('SSB调制信号功率谱')
xlabel('f');

在这里插入图片描述
1.4残留边带调幅
残留边带是介于双边带和单边带之间的一种调制方式,它保留了一个边带和另一个边带的一部分,但是传输频带要增宽了一些,残留边带一般采用滤波法形成。
残留边带的时域表达式为:
在这里插入图片描述
残留边带的频谱为:
在这里插入图片描述
其中在这里插入图片描述
为残留边带滤波器。这里涉及滤波器的设计,后续学习。
1.5幅度调制的解调
解调分为相干解调和非相干解调。
相干解调(同步解调)是将已调信号乘上一个同频同相的载波。
非相干解调(包络检波)。
二、角度调制
线性调制是通过改变载波的幅度来实现基带调制信号的频谱搬移,非线性调制是通过改变载波的频率或者相位来实现调制信号频谱搬移的,即载波的振幅保持不变,而载波的频率或者相位随基带信号发生变化。
因为频率或者相位的变化都可以看作是载波角度的变化,所以这种调制称为角度调制,角度调制就是频率调制(FM)和相位调制(PM)的统称。
2.3解调
窄带角调波的解调:可以应用相干解调。
宽带角调波的解调:进行非相干解调
调频信号的解调是要产生一个与输入调频波的频率成线性关系的输出电压,完成这个频率与与电压变换关系的器件是频率解调器。
解调器可以为鉴频器(对两种波形都适用)和锁相环(PLL)解调器。
鉴频器的作用是把输入信号的频率变化成输出电压瞬时幅度的变化,也就是说,鉴频器输出电压的瞬时幅度与输入调频波的瞬时频率偏移成正比。
鉴频器的数学模型可以等效为一个微分器和包络检波器组成的,微分器将调频信号变成调频调幅波,再由包络检波器检出幅度变化。
例子:设输入信号为在这里插入图片描述
载波中心频率fc=10Hz,调频器的压控震荡系数为5Hz/v,载波平均功率为1W。
求a.该调频信号的波形;
b调频信号的震荡谱;
c.用鉴频器解调出该信号,并与输出信号相比较。

%FM modulation and demodulation
Kf=5;
fc=10;
T=5;
dt=0.001;
t=0:dt:T;
%信源 
fm=1;
A=sqrt(2);
mt=A*cos(2*pi*fm*t);%信源信号
%FM调制
mti=1/2/pi/fm*sin(2*pi*fm*t);%mt的积分函数
% mti=A*1/2/pi/fm*sin(2*pi*fm*t);
% S_FM=A*cos(2*pi*fc*t+Kf*mti);
S_FM=A*cos(2*pi*fc*t+2*pi*Kf*mti);

figure
subplot(311);plot(t,S_FM)%FM信号波形
hold on;
plot(t,mt,'r--');    %FM包络
xlabel('t');ylabel('调制信号');
%FM调制
subplot(312);
[f,sf]=FFT_SHIFT(t,S_FM);
plot(f,abs(sf));
axis([-25 25 0 3]);
xlabel('f');ylabel('调制信号幅度谱');
%FM解调
N=length(S_FM);
dS_FM=zeros(1,N);
for k=1:N-1;
  dS_FM(k)= (S_FM(k+1)-S_FM(k))/dt; %取S_FM信号的微分
end
envlp=A*2*pi*fc+A*2*pi*Kf*mt;%FM波经微分后变成了调幅调频信号,其幅度变化为A[Wc+Kfm*m(t)]
subplot(313);plot(t,dS_FM)%FM信号波形
hold on;
plot(t,envlp,'r--');    %FM包络
xlabel('t');ylabel('调频信号微分后包络');

在这里插入图片描述
在FM调频中,如果根据调频信号的公式来看,为什么在求S_FM的Kf前面乘上了2pi,在后面求调幅调频信号的时候也是了2pi,并且在求mt积分的时候没有乘上A呢?

  • 40
    点赞
  • 412
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
1.1、设计内容 用Matlab编程仿真2FSK调制和相干解调系统 1.2、设计要求 (1)信源为八位二进制随机信号,比特率为50bit/s,载波频率f1=200Hz,f2=100Hz; (2)画出信源,2FSK已调信号,解调器乘以相干载波后的信号,经过低通滤波器后的信号和抽样判决后的信号波形; (3)撰写专业课程设计报告。 2、设计原理分析 2.1、2FSK介绍 数字频率调制又称频移键控(FSK),二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频f1,而符号“0”对应于载频f2(与f1不同的另一载频)的已调波形,而且f1与f2之间的改变是瞬间完成的。 其表达式为: 典型波形如下图所示。由图可见,2FSK信号可以看作两个不同载频的ASK信号的叠加。因此2FSK信号的时域表达式又可以写成: 2.2、 2FSK调制原理 2FSK调制就是使用两个不同的频率的载波信号来传输一个二进制信息序列。可以用二进制“1”来对应于载频f1,而“0”用来对应于另一相载频w2的已调波形,而这个可以用受矩形脉冲序列控制的开关电路对两个不同的独立的频率源f1、f2进行选择通。本次课程设计采用的是前面一种方法。如下原理图: 图1 调制原理框图 2.3、 2FSK解调原理 2FSK的解调方式有两种:相干解调方式和非相干解调方式,本次课程设计采用的是相干解调法,利用载波与已调信号进行相乘后滤波输出得到,在2FSK中要两个载波,所以解调也要两个载波,分别与已调信号相乘后利用低通,最后相加即可得到我们的滤波输出,再用抽样信号进行抽样判决器即可,其原理如下: 图2 相干解调原理框图 3、仿真参数设置说明 3.1、仿真参数设置 信源:八位二进制随机信号 载波频率:fc=900 信号频率:f1=100;f2=200 比特率:Rb= Rb=fm*log2_M=50 bit/s 3.2、仿真程序设计说明 详细设计步骤: 1.信号产生:二进制随机序列和两列频率不等的载波 1)利用matlab 库函数产生8个二进制随机数,也就是我们的基波调制信号a。 2)产生两列基带信号st1和st2,并画出其波形。 2.信号调制:产生2FSK信号和加入高斯噪声后的2FSK信号 1)用基带信号st1、st2和载波信号s1和s2,产生2fsk信号,具体做法是用以st1与 s1相乘,st2 与s2相乘,再将两列信号相加。 2) 2fsk信号相加得到加入噪声后的sn信号。 3.解调 (1)对于两列让sn通过两个低通滤波器,并画出经过带通滤波器后的波形。 (2)输入抽样脉冲,将两列波st1和st2通过抽样判决器,画出其波形st,并与之前调制后的波形sn做对比,并由Figure3得出比特率为50 bit/s。 4、仿真结果和分析 4.1、仿真结果 4.1.1.产生的基带信号 4.1.2.产生的载波信号 4.1.3.2FSK调制过程
AM调制是一种基本的模拟调制技术,其原理是将信息信号与载波进行乘积运算,得到一个调制后的信号,然后进行传输。在接收端,通过解调器将调制信号还原成原始信息信号。 下面介绍基于MATLAB的AM信号的调制解调方法: 1. AM信号的调制 首先生成一个正弦波作为载波信号,设其频率为fc,幅度为Ac。然后生成一个用于调制的信息信号,设其频率为fm,幅度为Am。将信息信号与载波信号相乘,即可得到AM调制信号。 具体MATLAB代码如下: ``` % 设定参数 fc = 1000; % 载波频率 fm = 100; % 信息信号频率 Ac = 1; % 载波幅度 Am = 0.5; % 信息信号幅度 % 生成载波信号 t = 0:0.0001:1; % 时间序列 carrier = Ac*sin(2*pi*fc*t); % 载波信号 % 生成信息信号 message = Am*sin(2*pi*fm*t); % 信息信号 % 进行AM调制 am_signal = (1 + message).*carrier; % AM调制信号 ``` 2. AM信号的解调 在接收端,需要将AM调制信号还原成原始信息信号。解调的方法有多种,这里介绍一种简单的包络检波法。 首先将AM调制信号通过一个带通滤波器,去除高频成分和低频成分,得到包络信号。然后将包络信号进行放大,即可得到解调后的信息信号。 具体MATLAB代码如下: ``` % 设定参数 fc = 1000; % 载波频率 fm = 100; % 信息信号频率 Ac = 1; % 载波幅度 Am = 0.5; % 信息信号幅度 % 生成载波信号 t = 0:0.0001:1; % 时间序列 carrier = Ac*sin(2*pi*fc*t); % 载波信号 % 生成信息信号 message = Am*sin(2*pi*fm*t); % 信息信号 % 进行AM调制 am_signal = (1 + message).*carrier; % AM调制信号 % 进行AM解调 envelope = abs(hilbert(am_signal)); % 包络检波 envelope = envelope - mean(envelope); % 去除直流分量 demod_signal = envelope * 10; % 放大解调信号 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值