常规双边带调幅(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
四、仿真结果
时域:
频域:
过调幅:
加噪: