AM,DSB,SSB,FM信号调制matlab

关于模拟调制系统仿真:

1 调制原理:

为了让实际信号便于在有限带宽的信道中传输,我们需要对信号进行调制和解调。由傅里叶变换可知,若想实现对频谱的搬移,我们可以将原始时域信号与一余弦信号进行运算,此为调制的原理。由于余弦信号包含三个分量,即幅度A0,频率wc,以及相位φ,因此可以利用实际信号对这三种分量做文章,因此也就有了幅度调制(AM,DSB,SSB),频率调制(FM),相位调制(PM)三种不同的调制方式。

2 幅度调制:

以AM(常规双边带调制)调制方式为例,说明幅度调制的一般性原理。
设:
S(t): 原始信号
cos(wc·t+φ): 载波信号
A0: 直流偏置
Sam(t): am调制后的信号

则对信号进行调制即:
Sam(t) = [ A0 + S(t) ]·cos(wc·t + φ)

3 频率调制:

以频率调制方式为例,对信号的调制表示为:

在这里插入图片描述
可以看出频率调制的特点有:

· 包络恒定;
· 频偏随调制信号m(t)作线性变换;
· 相偏随时间信号m(t)的对时间的积分作线性变化;
· 带宽与m(t)的带宽和mf有关,比Am带宽大(mf+1)倍

4 解调原理:

此处介绍相干解调和包络检波两种解调方式。

4.1 相干解调:

调制模型如图

传输信号经过乘法器,和本地载波(与载波信号同频同相)相乘,再通过一个低通滤波器,滤除高频分量,接收信号为m(t)/2。
具体推导略去。可参考《通信原理》(樊昌信 第七版)P95

4.2 包络检波:

在这里插入图片描述
通过全波整流,使信号变为正分量,在图像上即将负信号取反,通过低通滤波器滤除高频分量,剩下包络,也即m(t)。

5 仿真说明:

关于幅度调制的代码较为简单,不再说明;
FM调制中,需要注意

1 调频灵敏度Kf确定:

在这里插入图片描述
式1 为卡森公式,BFM为调频波的有效带宽,mf为调频指数,fm为最高调制频率,Δf是最大频偏,
式3 为了搬移后的频谱不会重叠
式4 是为了保证满足采样定理
由上不难获得kf。

2 关于信号的积分

由于我们处理的是数字信号,积分并不能解析,需要对数据进行累加和并统一除以采样频率(相当于乘以dt)。这里使用了matlab中的函数:
B = cumsum(A) %从 A 中的第一个其大小不等于 1 的数组维度开始返回 A 的累积和。

3 关于解调中的微分[差分]

Y = diff(X) 计算沿大小不等于 1 的第一个数组维度的 X 相邻元素之间的差分:

如果 X 是长度为 m 的向量,则 Y = diff(X) 返回长度为 m-1 的向量。Y 的元素是 X 相邻元素之间的差分。

Y = [X(2)-X(1) X(3)-X(2) … X(m)-X(m-1)]

4 关于包络检波的实现

此处采用希尔伯特变换后减去直流分量的方法
能力有限,此处不再给出证明。

6 部分代码:
AM

自行实现作图

clear;
clc
% 调制信号读取 -- 载波超参设定
[S,fs] = audioread('sound_1.wav');% fs为采样频率
S_num = size(S,1);
wc = 40000;
t = 1:S_num;
A0 = max(abs(S));
S_am = zeros(1,S_num);
fm = 3400;

% AM满幅调制 Sam(t) = [A0 + m(t)] * cos(wc * t)
for i = 1:size(S,1)
    S_am(i) = [A0 + S(i)]*cos(wc * t(i));
end

% 信道传输叠加高斯白噪声
S_AM = awgn(S_am,40);

% 相干解调 -- 乘以本地载波 -- 低通滤波
RS_AM = S_AM.*cos(wc.*t);
RS_AM = lowpass(RS_AM,fm,fs);
audiowrite('AM.wav',RS_AM,fs);
sound(RS_AM,fs)
FM
clear;
clc

% 调制信号读取 -- 载波超参设定
[S,fs] = audioread('sound_4.wav');% fs为采样频率
S_num = size(S,1);
wc = 0.5; 
fc = wc/2/pi;% fc 载波频率 fc = wc/2/pi;
t = 1:S_num;
A0 = max(abs(S));
S_fm = zeros(1,S_num);
fm = 4800;
B = 0.9 * min(2 * fc,fs - 2 * fc);%留一定的带宽余量,系数 <= 1
delta_f = B/2-fm;
kf =  2 * pi * delta_f/A0;
phi = cumsum(S)/fs;

% FM满幅频率调制 S_fm = A*cos[wc*t + Kf * integral{m(a)*da} ]
% 采用间接调频的方式:S_pm(t) = Acos[wc*t + Kp*m(t)];
for i = 1:size(S,1)
    S_fm(i) = cos(wc*t(i) + kf * phi(i));
end

% 信道传输叠加高斯白噪声
S_FM = awgn(S_fm,40);

% 非相干解调 -- 包络检波
RS_FM = diff(S_FM);
RS_FM = [0 abs(hilbert(RS_FM))];
RS_FM = RS_FM - mean(RS_FM);
audiowrite('FM.wav',RS_FM,fs);
sound(RS_FM,fs)

在这里插入图片描述
在这里插入图片描述

7 说明:

·使用时,需要将音频文件置于同一文件夹下,并替换代码中音频名。
·DSB,SSB解调方式同AM
·使用时请注明参考出处,谢谢。

作者:M宝可梦
QQ :1195653686

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值