常规双边带调幅(AM)仿真

一、调制原理
常规双边带调幅又叫标准调幅,简称调幅(AM)。假设调制信号 m(t) 的平均值为 0,将其加上一个直流分量 A0 后与载波相乘就可以得到AM信号。
调制模型如下图所示:在这里插入图片描述
二、解调原理
对于AM信号来说,使用两种解调方式:相干解调和非相干解调均可。在通常情况下,因为其包络与调制信号 m(t)的形状、波形起伏完全一致。故可以使用实现较为简便的包络检波法来恢复原信号。
包络检波器如下图所示:
在这里插入图片描述
其中,利用的原理分别是二极管的单向导通性、电容的高频旁路特性和电容的隔直特性。

三、仿真程序
调制部分:

clear all
clc;
close all;
dt = 0.001;         %时间采样频率
fm = 1;             %信源最高频率
fc = 10;            %载波中心频率
t = 0:dt:5-dt;      %时间向量
fs = 1/dt;          %抽样频率
df = fs/length(t);  % fft的频率分辨率
msg = sqrt(2)*cos(2*pi*fm*t);  %模拟消息信号
A = 2;            %直流分量
sig_AM_modu = (A+msg).*cos(2*pi*fc*t);  %AM信号
B = 2*fm;
subplot(3,1,1)
plot(t,msg,'b');          %画出消息信号
xlabel('时间/s');ylabel('幅度/V'); 
title('模拟消息信号')
subplot(3,1,2)
plot(t,sig_AM_modu,'g');hold on;   %画出AM信号
plot(t,A+msg,'r--');                %画出包络
xlabel('时间/s');ylabel('幅度/V');
title('AM调制信号及其包络')

解调部分:

demodu_sig = abs(hilbert(sig_AM_modu))-A;       %包络检波,并且去掉直流分量。
subplot(3,1,3)
plot(t,demodu_sig,'b')                    %画出解调后的信号
xlabel('时间/s');ylabel('幅度/V');grid on;
title('AM解调信号')

频域:

subplot(2,1,1)
Pm=fft(msg)/fs;                %求消息信号的频谱
f=-fs/2:df:fs/2-df;
plot(f,fftshift(abs(Pm)),'r')       %画出消息信号频谱
title('发送信号频谱');
xlim([-20 20]);ylim([0 8])
xlabel('频率/Hz');ylabel('幅度/V');grid on;
subplot(2,1,2)
Pam=fft(sig_AM_modu)/fs;                %已调信号频谱
plot(f,fftshift(abs(Pam)),'g')      %画出已调信号频谱
title('AM调制信号频谱');
xlim([-20 20])
xlabel('频率/Hz');ylabel('幅度/V');grid on;

过调幅情况:

msg_1 = 3*cos(2*pi*fm*t);     %改变调幅系数,令其大于1
A = 2;
s_am_1 = (A+msg_1).*cos(2*pi*fc*t);
B = 2*fm;
subplot(2,1,1)
plot(t,s_am_1,'g');hold on;
plot(t,A+msg_1,'r--');
xlabel('时间/s');ylabel('幅度/V');grid on;
title('AM调制信号及其包络')
demodu_sig_1 = abs(hilbert(s_am_1))-A;       %包络检波,并且去掉直流分量。
subplot(2,1,2)
plot(t,demodu_sig_1,'b');hold on;  %画出解调后的信号
plot(t,msg_1,'r--','linewidth',2)
xlabel('时间/s');ylabel('幅度/V');grid on;
title('过调幅时的解调信号与原信号')

加噪

SNR = 0:10:30;                  %信噪比依次赋值0 10 20 30
for ii = 1:length(SNR)
    
    recv_sig = awgn(sig_AM_modu,SNR(ii),'measured');      %调制信号通过AWGN信道
    demodu_sig_noisy = abs(hilbert(recv_sig))-A;        %包络检波,并且去掉直流分量。
    subplot(4,1,4)                 
    plot(t,demodu_sig_noisy,'k')
    xlabel('时间/s');ylabel('幅度/V');grid on;
    title(strcat('信噪比为',num2str(SNR(ii)),'dB时的AM解调信号'))
    str = {'r','g','b','k'};
    subplot(length(SNR),1,ii)
    plot(t,demodu_sig_noisy,str{ii})      %画出加噪解调波形
    xlabel('时间/s');ylabel('幅度/V');grid on;
    title(strcat('信噪比为',num2str(SNR(ii)),'dB时的AM解调信号'))

end

四、仿真结果
时域:
在这里插入图片描述
频域:
在这里插入图片描述
过调幅:
在这里插入图片描述
加噪:在这里插入图片描述