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

文章目录

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

一、模拟调制

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);

基于MATLAB的模拟信号AM、FM等调制与解调_第1张图片
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');

基于MATLAB的模拟信号AM、FM等调制与解调_第2张图片
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');

基于MATLAB的模拟信号AM、FM等调制与解调_第3张图片
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('调频信号微分后包络');

基于MATLAB的模拟信号AM、FM等调制与解调_第4张图片
在FM调频中,如果根据调频信号的公式来看,为什么在求S_FM的Kf前面乘上了2pi,在后面求调幅调频信号的时候也是了2pi,并且在求mt积分的时候没有乘上A呢?

你可能感兴趣的:(基于MATLAB的模拟信号AM、FM等调制与解调)