文章目录

  • 前言
  • 一、SSB调制的起源
    • 1. 信号的幅度调制:
    • 2. AM和DSB-SC:
    • 3. SSB调制:
  • 二、MATLAB仿真
    • 1.Hilbert变换的仿真:
    • 2."sin(t)"+"cos(t)"的仿真:(以正弦信号为例验证Hilbert变换)
    • 3.SSB的仿真:(以理想的“u(t)-u(t-1) ”信号作为原信号)
  • 总结
  • 引用(感谢以下作者)
  • 附录:
    • 附录一:四次Hilbert变换
    • 附录二:借助AM得到原信号(去除Hilbert()函数的零频影响)

前言

《通信原理》这门课程的第一次研讨中,老师提供了一个关于SSB调制的研讨方向。本文汇总了我们小组准备的资料,分成SSB的理论实现部分基于MATLAB的仿真部分两部分,带领大家详细探讨SSB调制过程,希望大家有所收获。(如果各位看官发现问题,还请不吝指出,谢谢~)


一、SSB调制的起源

1. 信号的幅度调制:

 《通信原理》(第2版)的定义:用消息信号去控制载波的瞬时幅度,使载波的幅度随调制信号而变化。

 听着很抽象是不是?以下是通俗易懂版本:
    无线通信的发射端需要把信号加在一个功率很大的载波信号上,才能够确保在很远的地方接收到信号,这个过程可
  以参考射频传输加以了解。

2. AM和DSB-SC:

常规调幅(AM)
     时域表达式:
  优点:接收端的制造成本低(只需要使用包络检波电路就可以实现);
     在需要大量接收机的时候有优势;
  缺点:调制效率不高(发送的过程中发送了大量纯载波,也就是“1”);
抑制载波双边带调制(DSB-SC):
  时域表达式:
   优点:没有了载波“1”,传输效率可以达到100%
   缺点:提高了接收端的成本(需要使用锁相环进行相干解调);

3. SSB调制:

改进:DSB-SC使用的双边带调制,在频带资源很紧张的情况下,传输双边带显然会造成资源浪费,因为根据傅里叶变换的性质,实函数(真实传输的信号)的正负频率部分是共轭对称的。

实现方式一:滤波法
  用滤波法产生SSB信号的原理框图如下:

    由上图可知,边带滤波器有两种,其中,Husb(w)用于剔除下边带,Hlsb(w)用于剔除上边带。

实现方式二:相移法(MATLAB仿真)
    用相移法产生SSB信号的原理框图如下:

二、MATLAB仿真

1.Hilbert变换的仿真:

 理论基础部分:

  • HIlbert变换只改变信号的相位,但是不改变信号的幅度谱。

 关键代码展示:

%%
%原信号和经过Hilbert变换之后的信号(时域图)
ts = 0.0025;
fs = 1/ts;
N = 200;
f = 50;
k = 0:N-1;
t = k*ts;
% 信号变换
% 结论:sin信号Hilbert变换后为cos信号
y =  sin (2* pi *f*t);
yh = hilbert(y);     % matlab函数得到信号是合成的复信号
y_h = imag (yh);     % 虚部为相移之后的原信号%%
%原信号和经过Hilbert变换之后的信号(频域图)
y_length=length(y);
y_h_length=length(y_h);
NFFT_y = 2^nextpow2(y_length);
NFFT_y_h = 2^nextpow2(y_h_length);
F_Y_domain = (fs/2)*linspace(0,1,NFFT_y/2);
F_Y_H_domain = (fs/2)*linspace(0,1,NFFT_y_h/2);
Y = fft(y,NFFT_y)/y_length;
Y_H = fft(y_h,NFFT_y_h)/y_h_length;
Amp_Y = 2*abs(Y(1:NFFT_y/2));
Amp_Y_H= 2*abs(Y_H(1:NFFT_y_h/2));

 仿真结果展示:

2.“sin(t)”+"cos(t)"的仿真:(以正弦信号为例验证Hilbert变换)

 理论基础部分:

  • 解析信号 = 原(实)信号 + j * 经过Hilbert变换之后的原信号,即:z(t) = x(t) + j * hilbert(x(t))

  • MATLAB中的hilbert()函数得到的是复信号,原因为:hilbert()的作用是将原信号中正频率的部分相移 -π/2,负频率部分相移π/2,因此需要通过实部和虚部一起表示信号(可以浏览附录一的图片加以理解);

  • 正弦函数的FT变换如下:

    我们不妨做以下尝试来验证Hilbert变换:
     a. 对经过hilbert变换之后的正弦信号翻转π/2(即*j),然后看这个处理之后的信号在实轴的投影,如果这个信号的投影为0,并且它的相位谱和原信号的相位谱不同,则说明Hilbert变换确实改变了信号的相位;

 关键代码展示:

%%
%信号翻转
y =  sin (2* pi *f*t);
yh = hilbert(y);     % matlab函数得到信号是合成的复信号
y_h = j * imag (yh);     % 虚部为相移之后的原信号%%
%信号叠加
y_y_h = y + y_h;
y_y_h_length=length(y_y_h);
NFFT_y_y_h = 2^nextpow2(y_y_h_length);
F_Y_Y_H_domain = (fs/2)*linspace(0,1,NFFT_y_y_h/2);
Y_Y_H = fft(y_y_h,NFFT_y_y_h)/y_y_h_length;
Amp_Y_Y_H = 2*abs(Y_Y_H(1:NFFT_y_y_h/2));

 仿真结果展示:


3.SSB的仿真:(以理想的“u(t)-u(t-1) ”信号作为原信号)

 理论基础部分:

  • 本仿真过程中采用的是剔除下边带SSB调幅法,即:
  • 由于MATLAB中的Hilbert()变换阶数有限,所以对一个理想的窗函数进行Hilbert变换之后,得不到理想的冲击函数,而是有一定的高度
  • 由于Hilbert变换在频率为零的附近没有定义,为了保证幅度谱的连续性,MATLAB会强制在零频率附近赋值,所以一个理想的窗函数经过Hilbert变换之后,在频域上得不到理想的sinc函数;(在附录二有解决的方案)
  • 载波的频率为5000hz,所以原信号和经过了Hilbert变换之后的信号相加得到的叠加信号的幅度谱,在5000hz的右边(上边带)为两个信号的幅度谱直接相加,在5000hz的左边(下边带)为两个信号的幅度谱直接相减
  • 由于MATLAB都是使用DFT进行信号的处理,所以仿真出来的结果不会出现理想的情况。

 关键代码展示:

变量表示的意思:
y:cos载波信号;                    y_h:sin载波信号;
m:原信号;                        m_h:经过Hilbert变换之后的原信号;
y_m:原信号加载在cos载波信号;    y_h_m_h:经过Hilbert变换之后的原信号加载在sin载波信号;
y_m_y_h_m_h:y_m + y_h_m_h
%%
%定义相移法中用到的载波
ts = 0.000025;
fs = 1/ts;
N_zai = 200;
f_zai = 5000;
k = 0:N_zai;
t_zai = k*ts;
%得到cos载波信号
y =  cos (2* pi *f_zai*t_zai);
yh = hilbert(y);
%得到sin载波信号
y_h = imag (yh);      %%
%原函数:使用理想的u(t)-u(t-1) (时域)
f_yuan = 50;
t = -2:1/f_yuan:2;
ut1 = stepfun(t,0);
ut2 = stepfun(t,1);
m = ut1 - ut2;
mh = hilbert(m);
m_h = imag (mh);
%原函数:使用理想的u(t)-u(t-1) (频域)
m_length=length(m);
NFFT_m = 2^nextpow2(m_length);
F_M_domain = (fs/2)*linspace(0,1,NFFT_m/2);
M = fft(m,NFFT_m)/m_length;
Amp_M = 2*abs(M(1:NFFT_m/2));
M_H = fft(m_h,NFFT_m)/m_length;
Amp_M_H = 2*abs(M_H(1:NFFT_m/2));  %%
%SSB的相移过程:(默认Ac=1)
y_m = m.*y;
y_h_m_h = (j*m_h).*(j*y_h);
y_m_y_h_m_h = y_m + y_h_m_h;
y_m_length=length(y_m);
y_h_m_h_length=length(y_h_m_h);
y_m_y_h_m_h_length=length(y_m_y_h_m_h);
NFFT_y_m = 2^nextpow2(y_m_length);
NFFT_y_h_m_h = 2^nextpow2(y_h_m_h_length);
NFFT_y_m_y_h_m_h = 2^nextpow2(y_m_y_h_m_h_length);
F_Y_M_domain = (fs/2)*linspace(0,1,NFFT_y_m/2);
F_Y_H_M_H_domain = (fs/2)*linspace(0,1,NFFT_y_h_m_h/2);
F_Y_M_Y_H_M_H_domain = (fs/2)*linspace(0,1,NFFT_y_m_y_h_m_h/2);
Y_M = fft(y_m,NFFT_y_m)/y_m_length;
Y_H_M_H = fft(y_h_m_h,NFFT_y_h_m_h)/y_h_m_h_length;
Y_M_Y_H_M_H = fft(y_m_y_h_m_h,NFFT_y_m_y_h_m_h)/y_m_y_h_m_h_length;
Amp_Y_M = 2*abs(Y_M(1:NFFT_y_m/2));
Amp_Y_H_M_H = 2*abs(Y_H_M_H(1:NFFT_y_h_m_h/2));
Amp_Y_M_Y_H_M_H= 2*abs(Y_M_Y_H_M_H(1:NFFT_y_m_y_h_m_h/2));

 仿真结果展示:



总结

  原信号经过Hilbert变换器得到与原信号相位不同、幅值相同的新信号,然后通过一个简单的加法器就可以进行叠加,最后实现SSB调制。这种调制方式既能够解决AM调制效率不高的问题,又能够解决DSB-SC浪费频带的问题,是现在实现幅度调制比较好并且可以调制性能比较高的调幅方式。
  最后,特别感谢通信原理第一小组的所有组员们(由于网络隐私问题,这里就不写大家的名字了)。能够得到最后仿真的成果,是因为大家一起准备的材料,尤其是大家汇总的PPT,可以说,这篇文章,只是把大家汇总的PPT进行了书面的表达。所以,再次感谢大家~

引用(感谢以下作者)

文章名字 文章作者
通信原理第一小组(研讨题:31) 通信原理第一小组全体组员
《通信原理 第二版》 李晓峰老师
常用傅里叶变换对 杨老师
【 MATLAB 】sinc 函数简介 李锐博恩
深入浅出傅里叶变换(目前看到的讲得最好的一篇文章) 聪聪那年_
希尔伯特变换(Hilbert Transform)简介及其物理意义 江户川柯壮

附录:

附录一:四次Hilbert变换

附录二:借助AM得到原信号(去除Hilbert()函数的零频影响)

  问题描述:
    当输入的信号是一个简单的窗函数时,可以在频域的零频率附近发现,经过Hilbert变换之后的信号的幅度谱和原信
  号的幅度谱发生了变化(现象可以参考上图中的SSB仿真结果),而按照HIlbert变换的定义,Hilbert变换并不改变信号
  的幅度谱特征。

  理论分析:
    又Hilbert变换的定义可知,Hilbert变换在零频率附近是没有做定义的,但是在Matlab中,hilbert()函数为了保证函
  数图像的连贯性,就在零频率附近进行了强行赋值,于是就出现了Hilbert变换改变幅度谱的错误现象。

  第二次SSB仿真思路:
    第一次SSB仿真采用的原信号是一个简单的窗函数,它在频域上会出现在零频率附近幅值不为零的情况,这样会出
  现Hilbert变换改变幅度谱的错误现象。为了避免出现这样的错误现象,李晓峰老师提供了一个解决问题的方案:利用AM
  调幅的方法,把窗函数进行频谱的搬移,这样在零频率附近就基本不存在幅度值非零的影响了。

  第二次SSB仿真关键代码展示:

%原函数:使用理想的u(t)-u(t-1) (时域)/仿真效果不太好
%原函数:借用DSB-SC调制的方式 (时域)/仿真效果比较好
f_yuan = 50;
t = -2:1/f_yuan:2;
%ut1 = stepfun(t,0);
%ut2 = stepfun(t,1);
%m = ut1 - ut2;
ut1 = stepfun(t,0);
ut2 = stepfun(t,100);
ut = ut2 - ut1;
m = (1+ut).*cos(2*pi*500*t_zai);
mh = hilbert(m);
m_h = imag (mh);

  第二次SSB仿真效果展示:

单边带调制(SSB调制)的理论基础和MATLAB仿真相关推荐

  1. 基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...

    基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)(开题报告,论文10700字,程序代码,录像) 摘 要 随着无线通信技术的不断发展与进步,数字电视广播.移动视频点播等对数据吞吐量要 ...

  2. matlab画2fsk频谱,2fsk信号调制解调频谱的matlab仿真

    2fsk信号调制解调频谱的matlab仿真 2FSK信号的调制解调与频谱绘制的matlab仿真 a=randint(1,16); t=0.0001:0.001:1; inisig=a(ceil(t./ ...

  3. 基于matlab的正交振幅调制与解调,正交幅度调制(QAM)及解调Matlab仿真

    正交幅度调制(QAM)及解调Matlab仿真实验目的: 1.掌握QAM及解调原理与特性: 2.了解星座图的原理及用途. 实验内容: 1.编写MATLAB程序仿真QAM及相干解调: 2.观察I.Q两路基 ...

  4. 基于能量检测的调制方式识别算法MATLAB仿真,识别不同SNR下的MFSK和MPSK

    UP目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 随着无线通信的快速发展,用户对通信质量的要求越来越高,同时无线设备的大幅度增长,使得频谱资源显得更加重要.认知无线电(Cognitiv ...

  5. 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  6. LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真

    LTE(长期演进)下行链路 PHY(物理)层处理链路可以认为是下行链路共享信道(DLSCH)和物理下行链路共享信道(PDSCH)处理的组合.DLSCH 即 下行链路传输信道 TrCH. LTE下行链路 ...

  7. 【调制识别】基于高阶累积量的调制方式识别算法matlab仿真,课题识别BPSK, QPSK, 16QAM, 64QAM

    目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 由于数字调制信号越来越多地应用于通信信号处理领域,因此对数字信号调制识别的研究也越来越多.传统的调制识别的判决方法有:决策判决法.高阶 ...

  8. m无线通信的调制解调过程的matlab仿真,包括ASK,FSK,PSK

    目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK).频移键控(FS ...

  9. 基于ZF均衡算法的OFDM调制解调系统的MATLAB仿真

    UP目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是M ...

最新文章

  1. [SDOI2016]生成魔咒
  2. 向模拟器发短信打电话的方法
  3. 多线程服务器模型-one loop per thread
  4. android sharedUserId 共享用户
  5. 学计算机的事物多线程看不懂,看不懂CPU?学会看CPU只需明白这5点,如此简单!...
  6. twisted系列教程六–继续重构twisted poetry client
  7. vue面试有哪些插件_vue 前端框架面试问题汇总
  8. 没有为 ucrtbase.dll 加载符号_深入理解Java虚拟机(类加载机制)
  9. 吴恩达深度学习5.3练习_Sequence Models_Neural machine translation with attention
  10. Python、PyCharm、Django框架安装
  11. GCC 11.1 进行 C++ 多项优化
  12. Silverlight Blend动画设计系列二:旋转动画(RotateTransform)
  13. JDK问题--linux下java unrecognized class file version错误的解决
  14. java编程对电脑配置,编程对电脑配置要求高吗?
  15. psd导出jpg太大_【设计】PSD导出JPG文件非常大解决办法
  16. 易我电脑迁移 v12.2
  17. 上汽拿下国内首张道路测试用牌照
  18. 专访郑博闻:13岁的iOS开发者和创业者
  19. Cannot pull, git cannot resolve reference ORIG_HEAD
  20. PID学习笔记:模拟加热系统的PID控制

热门文章

  1. 2017-2018-1 20155323 《信息安全系统设计基础》第9周学习总结
  2. Matlab深度学习笔记——深度学习工具箱说明
  3. gitlab 批量添加用户并去掉邮箱验证(亲测有效)
  4. 微信小程序(看文档写实例十)微信小程序课堂宝APP实现我的模块相关界面及逻辑
  5. 光棍节就要到了,要不要给你介绍个 python 对象?
  6. 《网络是怎样连接的》第四章 接入网,网络运营商
  7. ASDL宽带自动连接程序。解决每次手动连接之忧。
  8. DCE与DTE的区别上
  9. 蓝桥杯:铁塔尼号营救(Java版本)
  10. 微信(sdk)的支付、分享、拉起小程序