幅度调制(AM调制、DSB(双边带)调制、SSB、VSB)

幅度调制(线性调制)是由调制信号去控制高频载波的幅度,使之调制信号的频谱线性变化。

载波信号:c(t)=Acosωct,基带信号为m(t),则已调信号为:(设基带信号m(t)的频谱为M(ω)

sm(t)=Am(t)cosωct

Sm(ω)=A2[M(ω+ωc)+M(ωωc)]

可以看到,幅度调制就是把基带信号的频谱搬移到ωc处,再乘以1/2 。是线性变换。


 

AM调制

sAM(t)=[A0+m(t)]cosωct

SAM=πA0[δ(ω+ωc)+δ(ωωc)]+12[M(ω+ωc)+M(ωωc)]

为使用包络检波的方式进行解调,要求 |m(t)|<=A0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear all;
%% AM调制
fs = 800; % 采样速率,单位kHz
dt=1/fs;  % 采样时间间隔,单位ms
T = 200;  % 采样的总时间。频谱分辨率(df=1/T)。
t = 0 : dt : T-dt;
fm = 1; % 调制信号的频率,单位kHz
fc = 10; % 载波信号的频率,单位kHz
m = cos(2*pi*fm*t); % 调制信号
A = 3; %直流信号
s = (m+A).*cos(2*pi*fc*t); %已调信号
[f,sf] = T2F(t,s);
figure(1)
plot(t,s);
axis([0,2,-4,4]);
figure(2)
plot(f,abs(sf));
axis([-15,15,0,max(abs(sf))]);

DSB调制sDSB(t)=m(t)cosωct  SDSB(ω)=12[M(ω+ωc)+M(ωωc)],只能用相干解调

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear all;
%% DSB调制
% DSB(双边带)只需将调制信号m(t)与载波信号cos(wt)直接相乘即可
dt=1/800;
T = 200;  % 采样的总时间。频谱分辨率(df=1/T)。
t = 0 : dt : T-dt;
fm = 2; % 调制信号的频率,单位kHz
fc = 20; % 载波信号的频率,单位kHz
m = cos(2*pi*fm*t); % 调制信号
s = m.*cos(2*pi*fc*t); %DSB已调信号
[f,sf] = T2F(t,s);
figure(1)
plot(t,s);
axis([0,1,-1,1]);
figure(2)
plot(f,abs(sf));
axis([-30,30,0,55]);

其中的函数T2F是信号的傅里叶变换

1
2
3
4
5
6
7
8
9
10
11
%% 函数  计算信号的傅里叶变换
function[f, sf] = T2F(t,st) % t为时域采样点;st为采样的时域信号
dt = t(2) -t(1);
% T = t(end);
T = t(end)-t(1)+dt;
df = 1/T;
N = length(st);
f = -N/2*df : df: N/2*df - df;
sf = fft(st);
sf = T/N * fftshift(sf);
end

还有F2T傅里叶反变换

1
2
3
4
5
6
7
8
9
10
11
%% 计算信号频谱 sf 的傅里叶反变换
function [ t, st ] = F2T( f, sf )
df = f(2)-f(1);
Fmx = f(end)-f(1)+df;
dt = 1/Fmx;
N = length(sf);
T = dt * N;
t = 0 : dt : T-dt; % 或 t = -T/2 : dt : T/2-dt;
sff = fftshift(sf);
st = Fmx * ifft(sff);
end

  

posted @   htj10  阅读(12466)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
TOP
点击右上角即可分享
微信分享提示

目录导航