目录

模拟调制技术详解

模拟调制技术详解

内容摘要

本文系统讲解模拟调制技术原理及Matlab实现,涵盖幅度调制的四种主要类型:双边带抑制载波调幅(DSB-SC)、含离散大载波调幅(AM)、单边带调幅(SSB)和残留边带调幅(VSB)。通过理论推导与Matlab实例结合,详细分析调制信号生成、功率谱密度计算及相干解调过程,并对比各类调制的解调性能与带宽效率。文中提供完整代码与运行结果示意图,帮助读者深入理解模拟调制技术及其实际应用。

关键词 :模拟调制 DSB-SC AM SSB VSB 相干解调 功率谱密度


调制是将信号变换为适合信道传输形式的关键技术。由于信源特性与信道特性可能存在不匹配,直接传输可能导致信号失真。模拟调制针对模拟信源,常见方法包括调幅(AM)、调相(PM)和调频(FM)。本文重点介绍幅度调制技术及其实现。


1. 双边带抑制载波调幅(DSB-SC)

理论基础

设均值为零的模拟基带信号为

m ( t ) m(t)

m

(

t

) ,DSB-SC 调制信号表达式为:

s ( t )

m ( t ) cos ⁡ ( 2 π f c t ) s(t) = m(t)\cos(2\pi f_c t)

s

(

t

)

=

m

(

t

)

cos

(

2

π

f

c

t

)

m ( t ) m(t)

m

(

t

) 为随机信号时,其功率谱密度为:

P s ( f )

1 4 [ P M ( f − f c ) + P M ( f + f c ) ] P_s(f) = \frac{1}{4}\left[P_M(f - f_c) + P_M(f + f_c)\right]

P

s

(

f

)

=

4

1

[

P

M

(

f

f

c

)

P

M

(

f

f

c

)

]

m ( t ) m(t)

m

(

t

) 为确知信号,其频谱为:

S ( f )

1 2 [ M ( f − f c ) + M ( f + f c ) ] S(f) = \frac{1}{2}\left[M(f - f_c) + M(f + f_c)\right]

S

(

f

)

=

2

1

[

M

(

f

f

c

)

M

(

f

f

c

)

]

其中

P M ( f ) P_M(f)

P

M

(

f

) 是

m ( t ) m(t)

m

(

t

) 的功率谱密度,

M ( f ) M(f)

M

(

f

) 是其频谱。由于

m ( t ) m(t)

m

(

t

) 均值为零,DSB-SC 信号不含离散载波分量。

相干解调

解调过程通过载波同步实现:

r ( t )

s ( t ) cos ⁡ ( 2 π f c t )

m ( t ) cos ⁡ 2 ( 2 π f c t )

1 2 m ( t ) + 1 2 m ( t ) cos ⁡ ( 4 π f c t ) r(t) = s(t)\cos(2\pi f_c t) = m(t)\cos^2(2\pi f_c t) = \frac{1}{2}m(t) + \frac{1}{2}m(t)\cos(4\pi f_c t)

r

(

t

)

=

s

(

t

)

cos

(

2

π

f

c

t

)

=

m

(

t

)

cos

2

(

2

π

f

c

t

)

=

2

1

m

(

t

)

2

1

m

(

t

)

cos

(

4

π

f

c

t

)

使用低通滤波器滤除高频分量

cos ⁡ ( 4 π f c t ) \cos(4\pi f_c t)

cos

(

4

π

f

c

t

) ,即可恢复原始信号。

Matlab实现

% 信源参数设置  
dt = 0.001;  
fm = 1;  
fc = 10;  
T = 5;  
t = 0:dt:T;  
mt = sqrt(2)*cos(2*pi*fm*t);  

% DSB-SC调制  
s_dsb = mt.*cos(2*pi*fc*t);  

% 相干解调  
rt = s_dsb.*cos(2*pi*fc*t);  
rt = rt - mean(rt);  
[f, rf] = T2F(t, rt);  
[t, rt] = lpf(f, rf, 2*fm);  

运行结果 (示意图):

https://i-blog.csdnimg.cn/direct/b5e8d1ce538b495b859e4ed3e22a78e9.png#pic_center

  • 调制信号波形与基带信号对比。
  • 功率谱密度呈现对称双边带特性。
  • 解调信号与原始信号幅值减半但波形一致。

2. 含离散大载波调幅(AM)

信号模型

AM 信号表达式为:

s ( t )

[ A + m ( t ) ] cos ⁡ ( 2 π f c t ) s(t) = [A + m(t)]\cos(2\pi f_c t)

s

(

t

)

=

[

A

m

(

t

)]

cos

(

2

π

f

c

t

)

其中

A A

A 为常数。若

A

∣ m ( t ) ∣ A > |m(t)|

A

m

(

t

)

∣ ,称为欠调幅,可通过包络检波解调;若

A < ∣ m ( t ) ∣ A < |m(t)|

A

<

m

(

t

)

∣ ,需采用相干解调。

功率谱特性

AM 信号功率谱包含载波分量和边带分量:

P s ( f )

A 2 4 [ δ ( f − f c ) + δ ( f + f c ) ] + 1 4 [ P M ( f − f c ) + P M ( f + f c ) ] P_s(f) = \frac{A^2}{4}[\delta(f - f_c) + \delta(f + f_c)] + \frac{1}{4}[P_M(f - f_c) + P_M(f + f_c)]

P

s

(

f

)

=

4

A

2

[

δ

(

f

f

c

)

δ

(

f

f

c

)]

4

1

[

P

M

(

f

f

c

)

P

M

(

f

f

c

)]

Matlab实现

% AM调制  
A = 2;  
s_am = (A + mt).*cos(2*pi*fc*t);  

% 相干解调  
rt = s_am.*cos(2*pi*fc*t);  
rt = rt - mean(rt);  
[f, rf] = T2F(t, rt);  
[t, rt] = lpf(f, rf, 2*fm);  

运行结果 (示意图):

https://i-blog.csdnimg.cn/direct/76ac79225090448eaf4cbd639ace09f0.png#pic_center

  • 调制信号包络与基带信号叠加直流分量。
  • 功率谱中载波分量显著。
  • 解调信号需去除直流偏移后恢复原始波形。

3. 单边带调幅(SSB)

信号生成

SSB 通过抑制双边带中的一侧实现,以上边带为例:

s ( t )

m ( t ) cos ⁡ ( 2 π f c t ) − m ^ ( t ) sin ⁡ ( 2 π f c t ) s(t) = m(t)\cos(2\pi f_c t) - \hat{m}(t)\sin(2\pi f_c t)

s

(

t

)

=

m

(

t

)

cos

(

2

π

f

c

t

)

m

^

(

t

)

sin

(

2

π

f

c

t

)

其中

m ^ ( t ) \hat{m}(t)

m

^

(

t

) 是

m ( t ) m(t)

m

(

t

) 的希尔伯特变换。

频谱特性

SSB 信号带宽仅为基带信号带宽

f m f_m

f

m

,频谱利用率更高。

Matlab实现

%显示模拟调制的波形及解调方法SSB,文件mssb.m
%信源
close all;
clear all;
dt = 0.001; %时间采样间隔
fm = 1; %信源最高频率
fc = 10; %载波中心频率
T = 5; %信号时长
t = 0:dt:T;
mt = sqrt(2)*cos(2*pi*fm*t); %信源
NO = 0.01; %白噪单边功率谱密度


%SSB modulation
s_ssb = real(hilbert(mt).*exp(j*2*pi*fc*t));
B = fm;
noise = noise_nb(fc,B,NO,t);
s_ssb = s_ssb + noise;
figure(1)
subplot(311)
plot(t,s_ssb);hold on; %画出SSB信号波形
plot(t,mt,'r--'); %标示mt的波形
title('SSB调制信号');
xlabel('t');


%SSB demodulation
rt = s_ssb.*cos(2*pi*fc*t);
rt = rt - mean(rt);
[f,rf]= T2F(t,rt);
[t,rt]= lpf(f,rf,2*fm)
subplot(312)
plot(t,rt);hold on;
plot(t,mt/2,'--');
title('相干解调后的信号波形与输入信号的比较');
xlabel('t')


subplot(313)
[t,sf]=T2F(t,s_ssb); %单边带信号频谱
psf=(abs(sf).^2)/T; %单边带信号功率谱
plot(f,psf);
axis([-2*fc,2*fc,0,max(psf)]);
title('SSB信号功率谱');
xlabel('f');



function [out]=noise_nb(fc,B,NO,t)
    % output the narrow band gaussian noise sample with single - sided power
    % spectrum NO
    %at carrier frequency equals fc and bandwidth euqals B
    dt = t(2)-t(1);
    Fmx = 1./dt;
    n_len = length( t);
    p = NO*Fmx;
    rn = sqrt(p)*randn(1,n_len);
    [f, rf]=T2F(t,rn);
    [t, out]=bpf(f,rf,fc - B/2,fc + B/2);
end

function [t, y] = bpf(f, x, fl, fh)
    % 带通滤波器函数
    % 输入:
    % f: 频率向量
    % x: 输入信号的频谱
    % fl: 带通滤波器的下限频率
    % fh: 带通滤波器的上限频率
    % 输出:
    % t: 时间向量
    % y: 滤波后的时域信号
    % 获取频率向量的长度
    N = length(f);
    
    % 初始化带通滤波器的频率响应
    H = zeros(1, N);
    
    % 找到频率在 [fl, fh] 范围内的索引
    index = (f >= fl) & (f <= fh);
    
    % 设置带通滤波器的频率响应为 1
    H(index) = 1;
    
    % 频域滤波:将输入信号的频谱与滤波器的频率响应相乘
    Y = H .* x;
    
    % 将滤波后的频谱转换回时域
    [t, y] = F2T(f, Y);
    
    % 取实部,因为滤波后的信号可能存在极小的虚部,这是由于数值计算误差导致的
    y = real(y);
end
xlabel('f');

运行结果 (示意图):

https://i-blog.csdnimg.cn/direct/01bb3849ca0c4288a2c17da261aac4c3.png#pic_center

  • 调制信号波形复杂度高于 DSB 和 AM。
  • 功率谱仅保留单边带分量。
  • 解调信号与原始信号幅值一致。

4. 残留边带调幅(VSB)

技术特点

VSB 保留部分边带以简化滤波器设计,其滤波器特性需满足:

H V S B ( f − f c ) + H V S B ( f + f c )

C H_{VSB}(f - f_c) + H_{VSB}(f + f_c) = C

H

V

SB

(

f

f

c

)

H

V

SB

(

f

f

c

)

=

C

带宽介于 SSB 和 DSB 之间。

Matlab实现

% VSB调制  
%显示模拟调制的波形及解调方法VSB,文件mvsb.m
%信源
close all;
clear all;
dt = 0.001; %时间采样间隔
fm = 5; %信源最高频率
fc = 20; %载波中心频率
T = 5; %信号时长
t = 0:dt:T;
mt = sqrt(2)*(cos(2*pi*fm*t)+sin(2*pi*0.5*fm*t)); %信源


%VSB modulation
s_vsb = mt.*cos(2*pi*fc*t);
B = 1.2*fm;
[f, sf] = T2F(t, s_vsb);
[t, s_vsb] = vsbpf(f, sf, 0.2*fm, 1.2*fm, fc);
figure(1)
subplot(311)
plot(t, s_vsb);hold on; %画出VSB信号波形
plot(t, mt, 'r--'); %标示mt的波形
title('VSB调制信号');
xlabel('t');


%VSB demodulation
rt = s_vsb.*cos(2*pi*fc*t);
[f, rf] = T2F(t, rt);
[t, rt] = lpf(f, rf, fm);
subplot(312)
plot(t, rt);hold on;
plot(t, mt/2, 'r--')
title('相干解调后的信号波形与输入信号的比较');
xlabel('t')
subplot(313)
[f, sf] = T2F(t, s_vsb);
psf = (abs(sf).^2)/T;
plot(f, psf);
axis([-2*fc,2*fc,0,max(psf)]);
title('VSB信号功率谱');
xlabel('f');



function [t, st] = vsbpf(f, sf, B1, B2, fc)
    % This function filter an input by an residuai bandpass filter
    % inputs: 
    %       f: frequency samples
    %       sf:input data spectrum samples
    %       B1:residual bandwidth
    %       B2:highest freq of the basedband signal
    % Outputs: 
    %       t: time samples
    %       st: output data's time samples
    df = f(2)-f(1);
    T = 1/df;
    hf = zeros(1, length(f));
    bf1 = [floor((fc - B1)/df):floor((fc + B1)/df)];
    bf2 = [floor((fc + B1)/df)+1:floor((fc + B2)/df)];
    f1 = bf1 + floor(length(f)/2);
    f2 = bf2 + floor(length(f)/2);
    stepf = 1/length(f1); hf(f1) = 0:stepf:1-stepf;
    hf(f2) = 1;
    f3 = -bf1 + floor(length(f)/2);
    f4 = -bf2 + floor(length(f)/2);
    hf(f3) = 0:stepf:(1-stepf);
    hf(f4) = 1;
    yf = hf.*sf;
    [t, st] = F2T(f, yf);
    st = real(st);
end 

运行结果 (示意图):

https://i-blog.csdnimg.cn/direct/8b194094c8364970b69f98a893d13bb8.png#pic_center

  • 调制信号保留部分低频双边带和高频单边带。
  • 功率谱呈现非对称特性。
  • 解调信号通过补偿滤波器后恢复原始波形。

5. 幅度调制解调性能对比

性能指标

解调增益

G G

G 定义为输入输出信噪比之比:

G

S N R i n S N R o u t G = \frac{SNR_{in}}{SNR_{out}}

G

=

SN

R

o

u

t

SN

R

in

调制类型输入信号功率带宽解调增益
DSB-SC1 2 E [ m 2 ] \frac{1}{2}E[m^2] 2 1 ​ E [ m 2 ]2 f m 2f_m 2 f m ​2
AM1 2 ( E [ m 2 ] + A 2 ) \frac{1}{2}(E[m^2] + A^2) 2 1 ​ ( E [ m 2 ] + A 2 )2 f m 2f_m 2 f m ​2 E [ m 2 ] E [ m 2 ] + A 2 \frac{2E[m^2]}{E[m^2] + A^2} E [ m 2 ] + A 2 2 E [ m 2 ] ​
SSB1 2 E [ m 2 ] \frac{1}{2}E[m^2] 2 1 ​ E [ m 2 ]f m f_m f m ​1

结论

  • DSB-SC :解调增益最高,但带宽需求大。
  • AM :支持包络检波,但功率效率低。
  • SSB :带宽利用率最优,适合窄带信道。

6. 综合实例:含噪声调制的Matlab实现

%显示模拟调制的波形及解调方法AM、DSB、SSE
%信源
close all;
clear all;
dt = 0.001;
fm = 1;
fc = 10;
t = 0:dt:5;
mt = sqrt(2)*cos(2*pi*fm*t);
NO = 0.1;


% AM modulation
A = 2;
s_am = (A + mt).*cos(2*pi*fc*t);
B = 2*fm;

noise = noise_nb(fc,B,NO,t);
s_am = s_am + noise;
figure(1)
subplot(321)
plot(t,s_am);hold on;
plot(t,A + mt,'r--');


% AM demodulation
rt = s_am.*cos(2*pi*fc*t);
rt = rt - mean(rt);
[f,rf]=T2F(t,rt);
[t,rt]=lpf(f,rf,2*fm);
title("AM 信号");
xlabel('t');
subplot(322)
plot(t,rt);hold on;
plot(t,mt/2,'r--');
title("AM解调信号");
xlabel('t');


%DSB modulation
s_dsb = mt.*cos(2*pi*fc*t);
B = 2*fm;
noise = noise_nb(fc,B,NO,t);
s_dsb = s_dsb + noise;
subplot(323)
plot(t,s_dsb);hold on;
plot(t,mt,'r--');
title('DSB信号');
xlabel('t');


%DSB demodulatior
rt = s_dsb.*cos(2*pi*fc*t);
rt = rt - mean(rt);
[f,rf]=T2F(t,rt); 
[t,rt]= lpf(f,rf,2*fm);
subplot(324)
plot(t,rt);hold on;
plot(t,mt/2,'r--');
title("DSB 解调信号");
xlabel("t");


%SSB modulation
s_ssb = real(hilbert(mt).*exp(j*2*pi*fc*t));
B = fm;
noise = noise_nb(fc,B,NO,t);
s_ssb = s_ssb + noise;
subplot(325)
plot(t,s_ssb);
title('SSB信号');
xlabel('t');


%SSB demodulation
rt = s_ssb.*cos(2*pi*fc*t);
rt = rt - mean(rt);
[f,rf]= T2F(t,rt);
[t,rt]= lpf(f,rf,2*fm)
subplot(326)
plot(t,rt);hold on;
plot(t,mt/2,'r--');
title("SSB解调信号");
xlabel('t');



function [out]=noise_nb(fc,B,NO,t)
    % output the narrow band gaussian noise sample with single - sided power
    % spectrum NO
    %at carrier frequency equals fc and bandwidth euqals B
    dt = t(2)-t(1);
    Fmx = 1./dt;
    n_len = length( t);
    p = NO*Fmx;
    rn = sqrt(p)*randn(1,n_len);
    [f, rf]=T2F(t,rn);
    [t, out]=bpf(f,rf,fc - B/2,fc + B/2);
end

function [t, y] = bpf(f, x, fl, fh)
    % 带通滤波器函数
    % 输入:
    % f: 频率向量
    % x: 输入信号的频谱
    % fl: 带通滤波器的下限频率
    % fh: 带通滤波器的上限频率
    % 输出:
    % t: 时间向量
    % y: 滤波后的时域信号

    % 获取频率向量的长度
    N = length(f);
    
    % 初始化带通滤波器的频率响应
    H = zeros(1, N);
    
    % 找到频率在 [fl, fh] 范围内的索引
    index = (f >= fl) & (f <= fh);
    
    % 设置带通滤波器的频率响应为 1
    H(index) = 1;
    
    % 频域滤波:将输入信号的频谱与滤波器的频率响应相乘
    Y = H .* x;
    
    % 将滤波后的频谱转换回时域
    [t, y] = F2T(f, Y);
    
    % 取实部,因为滤波后的信号可能存在极小的虚部,这是由于数值计算误差导致的
    y = real(y);
end

function [t, st] = lpf(f, sf, B)
    % lpf 函数用于实现理想低通滤波操作
    % 输入参数:
    % f: 频率向量,代表输入信号的频率范围
    % sf: 输入信号的频谱
    % B: 低通滤波器的带宽
    % 输出参数:
    % t: 时间向量
    % st: 滤波后的时域信号

    % 计算频率分辨率
    df = f(2) - f(1);
    % 获取频率向量的长度
    N = length(f);
    % 初始化理想低通滤波器的频率响应为全零向量
    H = zeros(1, N);

    % 找到零频率对应的索引
    center_index = floor(N / 2) + 1;
    % 计算单边带宽对应的点数
    num_points = floor(B / df);

    % 确定通带的索引范围
    bf = (center_index - num_points) : (center_index + num_points);
    % 确保索引范围在有效范围内
    valid_indices = (bf >= 1) & (bf <= N);
    bf = bf(valid_indices);

    % 将通带对应的频率响应设置为 1
    H(bf) = 1;

    % 频域滤波:将输入信号的频谱与滤波器的频率响应相乘
    filtered_spectrum = H .* sf;

    % 将滤波后的频谱转换回时域
    [t, st] = F2T(f, filtered_spectrum);

    % 取实部,因为滤波后的信号可能存在极小的虚部,这是由于数值计算误差导致的
    st = real(st);
end

function [f, Xf] = T2F(t, x)
    % 时域到频域转换函数
    N = length(t);
    dt = t(2) - t(1);
    f = (0:N-1)/(N*dt) - 1/(2*dt);
    Xf = fftshift(fft(x));
end

function [t, x] = F2T(f, Xf)
    % 频域到时域转换函数
    N = length(f);
    df = f(2) - f(1);
    t = (0:N-1)/(N*df) - 1/(2*df);
    x = ifft(ifftshift(Xf));
end

运行结果 (示意图):

https://i-blog.csdnimg.cn/direct/a0732984278d4fec8488a942c139164b.png#pic_center

  • 含噪声调制信号波形出现随机波动。
  • 解调信号中噪声影响程度与调制类型相关。

结语

本文通过理论推导与Matlab实例结合,系统阐述了幅度调制的核心原理与实现方法。读者可通过代码复现与参数调整,进一步探索不同调制技术的性能差异及适用场景。