我是靠谱客的博主 曾经冥王星,最近开发中收集的这篇文章主要介绍幅度调制AM,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、信号的调制

       在通信系统中,信源输出的是由原始信息变换成的电信号,这种信号通常具有较宽的频谱,并且在频谱的低端分布较大的能量,称为基带信号。但是多数信道是低频端受限的,无法长距离传输低频信号。因此在传输过程中需要将基带信号所蕴含的信息转载到高频载波上,这一过程叫做信号的调制。而在接收端将接收到的信号进行解调,以获取传递的信息。
image

二、调制定理

       我们知道一个余弦函数的傅里叶变换为
cos ⁡ ( w 0 t ) < F o u r i e r > π [ δ ( w + w 0 ) + δ ( w − w 0 ) ] cos(w_0t)<frac{Fourier}{}>pi [δ(w+w_0)+δ(w-w_0)] cos(w0t)<Fourier>π[δ(w+w0)+δ(ww0)]
       那么一个信号 m ( t ) m(t) m(t)与之相乘,其结果的傅式变换为 π [ M ( w + w 0 ) + M ( w − w 0 ) ] pi [M(w+w_0)+M(w-w_0)] π[M(w+w0)+M(ww0)],它所表示的物理含义就是是信号 m ( t ) m(t) m(t)的幅度谱 M ( ω ) M(omega) Mω分别向高频和低频搬移 ω 0 omega_0 ω0

       我们将信号 m ( t ) m(t) m(t)看作信源所产生的最高频率为 ω m omega_m ωm低频宽带信号,要使其能够在信道上传输,就可以乘以一个频率高到足以匹配信道的余弦信号(即高频载波),使其所包含的频谱信息都搬移至 [ ω 0 − ω m , ω 0 + ω m ] [omega_0-omega_m,omega_0+omega_m] [ω0ωm,ω0+ωm]的位置,这就是调制定理。

       调制的过程实质是完成信息的转载。

三、希尔伯特变换

       在信号处理领域中,一个实信号的希尔伯特变换(Hilbert transform)是将其通过一个冲激响应为 h ( t ) = 1 π t h(t)=frac{1}{pi t} h(t)=πt1的系统所得到的输出信号。该系统的频率响应为 H ( j ω ) = − s g n ( ω ) H(jomega)=-sgn(omega) H(jω)=sgn(ω)。这种变换所表示的物理含义为信号正频域的部分相移 − π 2 -frac{pi}{2} 2π,信号负频域的部分相移 π 2 frac{pi}{2} 2π

image

       欧拉公式 e j ω 0 t = c o s ( ω 0 t ) + j s i n ( ω 0 t ) e^{jomega_0t}=cos(omega_0t)+jsin(omega_0t) ejω0t=cos(ω0t)+jsin(ω0t)中我们可以将 c o s ( ω 0 t ) cos(omega_0t) cos(ω0t) s i n ( ω 0 t ) sin(omega_0t) sin(ω0t)看作一对希尔伯特变换,而任一实信号 x ( t ) x(t) x(t)均可表示为一系列 e j ω 0 t e^{jomega_0t} ejω0t的线性组合,那么 x ( t ) x(t) x(t)与其希尔伯特变换也可以通过这种方式扩展成一个复信号,方便信号的处理。
x ~ = x ( t ) + j x ^ ( t ) tilde{x}=x(t)+jhat{x}(t) x~=x(t)+jx^(t)

四、常规调幅(AM)

       常规调幅(Conventional Amplitude Modulation)的过程是将基带信号m(t)的电平抬高A0再乘以高频载波***c(t)***实现频谱的搬移。

​ <img src="E:学!通信原image

       其数学表达式为
s A M ( t ) = ( A 0 + m ( t ) ) ⋅ c ( t ) s_{AM}(t)=(A_0+m(t))·c(t) sAM(t)=(A0+m(t))c(t)

1. 理论分析

       基带调制信号***m(t)***在常规调幅的过程中要保证加入抬高电平 A 0 A_0 A0之后信号的任意一个时刻的幅度要大于零,即 ∣ A 0 ∣ > = ∣ m ( t ) ∣ m a x |A_0|>=|m(t)|_{max} A0>=m(t)max。这里引入一个参数 调幅深度β,即 β A M = ∣ m ( t ) ∣ m a x A 0 β_{AM}=frac{|m(t)|_{max}}{A_0} βAM=A0m(t)max。为了保证不出现”过调幅”的现象,调幅深度应满足β=<1(一般取小于0.8的值)。

       下面以单音信号为例进行分析。

       设调制信号 m ( t ) = A m c o s ( ω m t ) m(t)=A_mcos(omega_mt) m(t)=Amcos(ωmt),抬高电平为 A 0 A_0 A0,载波为 c ( t ) = c o s ( ω 0 t ) c(t)=cos(omega_0t) c(t)=cos(ω0t)。则已调信号为
KaTeX parse error: No such environment: align at position 8: begin{̲a̲l̲i̲g̲n̲}̲ s_{AM}(t)&=(A_…
       其频域表达式为
KaTeX parse error: No such environment: align at position 8: begin{̲a̲l̲i̲g̲n̲}̲ S_{AM}(omega…

       即 A 0 + m ( t ) 的 频 谱 被 搬 移 到 ω 0 处 A_0+m(t)的频谱被搬移到omega_0处 A0+m(t)ω0,那么 S A M ( ω ) S_{AM}(omega) SAM(ω)的图像应该是

image

2. AM仿真

       针对这一过程我们在MATLAB中进行仿真验证,结果如下:
image
       这与我们的理论推导结果相符合。

       仔细观察我们可以看到仿真后频域的图像中所出现的并非是冲激信号,中间会留有空隙。

       这是因为在计算机信号都是数字的形式,我们无法直接对模拟信号进行处理,只能对模拟信号进行采样、量化、编码,将其近似为数字信号,而在这一过程中发生的频谱泄漏现象即为图中“冲激信号”的留白部分,我们可以通过增加采样点数来抑制这一现象。
image

3. 包络检波

       在整个通信系统中我们不能只考虑信源发出的信号信道能否传输,还要考虑信宿如何去从已调信号中获取我们传递的信息。

       常规调幅的过程其实就是将调制信号所包含的信息通过载波转载后存放在已调信号的幅度中,在MATLAB仿真中我们绘制出了已调信号时域波形的包络,可以发现其包络就是我们的调制信号。而信宿要接收的信号是从这一已调信号通过解调器解析出来。这里解调器的工作就是获取这一包络。
image

       已调信号的有上下两个包络,它们是一样的(只是幅度正负不同),我们只要其一即可,这里我们可以通过半波整流来达到这一效果。随后通过一个低通滤波器,将已调信号的高频分量(来自载波)被滤去,就会只剩下低频的基带信号。包络检波可以用一种非常简单的电路来实现。

image

4. “过调幅”现象

       前面我们提到AM的调幅深度不能小于1,这是因为获取的已调信号的包络是上下对称的,当 β A M > 1 β_{AM}>1 βAM>1时,我们并不能保证信号在任意时刻的幅度都大于零,在调制之后中是没问题的,但是在包络检波的第一步半波整流之后就出错了。在这一步我们发现信号的包络线与调制信号并不相符,所展示出的部分是上下两个包络线大于零的部分即二者之间发生了相互干扰。

image

       加入抬高电平 A 0 A_0 A0并使调幅深度小于1就是为了让二者不发生干扰以保证后续能够解调出原信号波形。

5. 希尔伯特变换与解析包络

       虽然我们在前面阐述了包络检波的一种简单思路,它可以通过一些简单的模拟器件实现,但是我们难以通过一些数学表达式来分析检波的这一过程。这里我们可以用希尔伯特变换进行分析。

       对于我们的基带信号 m ( t ) m(t) m(t),它经过常规调幅之后所得到的输出信号为 s A M ( t ) = ( A 0 + m ( t ) ) ⋅ c o s ( ω 0 t ) s_{AM}(t)=(A_0+m(t))·cos(omega_0t) sAM(t)=(A0+m(t))cos(ω0t)。这里我们将 ( A 0 + m ( t ) ) (A_0+m(t)) (A0+m(t))看作一个整体 x ( t ) x(t) x(t),将 s A M ( t ) s_{AM}(t) sAM(t)与其希尔伯特变换构建成一个复信号,即
s A M ( t ) + j s ^ A M ( t ) = x ( t ) ⋅ c o s ( ω 0 t ) + j x ( t ) ⋅ s i n ( ω 0 t ) = x ( t ) ⋅ e j w 0 t s_{AM}(t)+jhat{s}_{AM}(t)=x(t)·cos(omega_0t)+jx(t)·sin(omega_0t)=x(t)·e^{jw_0t} sAM(t)+js^AM(t)=x(t)cos(ω0t)+jx(t)sin(ω0t)=x(t)ejw0t

       那么这个复信号的幅值就是 x ( t ) x(t) x(t)的包络,在MATLAB中可以用*abs()*函数取其幅值。

       需要注意的是在MATLAB中希尔伯特变换的函数*Hilbert()*所得到的是该实信号与其希式变换构造出的复信号而不只是一个变换。

       用这种方式解析出的信号如下。
image

       可以看出我们的基带信号已被成功解调,但是端点处有失真(另一端也有,这里坐标轴限定了长度,后半部分未显示)。

       从我们的理论推导来看,这种方式应该是无失真解调,但是这里却出现了失真,这一问题我们称之为端点效应

由于数字实现过程涉及与原始信号构造相位差为Π/2的共轭信号,而共轭信号通过“Fourier变换-双边谱对折为单边谱-Fourier逆变换”求取,对周期信号进行非完整周期采样时,Fourier变换将引起Gibbs现象,发生频率泄露。而对单边谱进行Fourier变换的逆变换时,这种频率泄露造成的误差无法抵消,导致信号两端产生“飞逸”,使求取的Hilbert谱无法准确反映原始信号的本质特性。
–引自《希尔伯特-黄变换端点效应抑制算法综述》

7. MATLAB代码

Am = 1;     %调制信号幅度
fm = 5;  %调制信号频率
beta = 0.5; %调幅深度
f0 = 50;%载波频率
A0 = Am/beta;%抬高电平
%{ 常规调幅  %}
%{
fs = 500;     %大于二倍最高频率
T = 1;
dt = 0.0001;
N = T/dt;  %采样点数
t = [0:N-1] * dt; %采样点的时间序列

dt与fs应该成倒数关系,直接设定容易错
%}
fs = 500;     %采样频率
T = 1;
N = 8192;  %采样点数       N是fs整数倍的时候不会出现端点效应 ???
n = 0:N-1; %采样点的时间序列
t = n/fs; 

m = Am*cos(2*pi*fm*t);%调制信号
c = cos(2*pi*f0*t);%载波

s = (A0+m).*c;

figure(1);

subplot(4,1,1)
plot(t,m)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
%line画线函数[a,b],[c,d]是从(a,c)画到(b,d)
title('调制信号m(t)')

subplot(4,1,2)
plot(t,c)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
title('高频载波c(t)')

subplot(4,1,3)
plot(t,s)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
hold on
plot(t,A0+m,'r--')      %绘制包络线
hold on
plot(t,-(A0+m),'r--')   %绘制包络线
title('AM已调信号s(t)')

%{ 
    包络检波(非相干解调) 
    半波整流->低通滤波->隔断直流
%}
s_banbo = s;   
s_banbo(s_banbo<0)=0;   %将小于零的部分置零

subplot(4,1,4)
plot(t,s_banbo)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
hold on
plot(t,A0+m,'r--')      %绘制包络线
title('半波整流后')

figure(2)

subplot(4,1,1)
n=(-N/2):1:(N/2 -1);
f = (n-1).*fs/N;
plot(f,fftshift(abs((2/N)*fft(A0+m))))
axis([-110 110 0 4])
title('A0+m(t)幅度谱')
subplot(4,1,2)
plot(f,fftshift(abs((2/N)*fft(c))))
axis([-110 110 0 2])
title('载波信号幅度谱')
subplot(4,1,3)
plot(f,fftshift(abs((2/N)*fft(s))))
axis([-110 110 0 4])
title('已调信号幅度谱')
subplot(4,1,4)
plot(f,fftshift(abs((2/N)*fft(s_banbo))))
axis([-110 110 0 2])
title('半波整流后信号幅度谱')
figure(3)
s_m =abs(hilbert(s));   
        % matlab的hilbert得到的是构建出的复信号而不是其希尔伯特
plot(t,s_m-mean(s_m));  %均值(直流)
axis([0 1 -4 4])
title('解调出的信号为')

最后

以上就是曾经冥王星为你收集整理的幅度调制AM的全部内容,希望文章能够帮你解决幅度调制AM所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部