单边带调制(SSB调制)的理论基础和MATLAB仿真
文章目录
- 前言
- 一、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仿真相关推荐
- 基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...
基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)(开题报告,论文10700字,程序代码,录像) 摘 要 随着无线通信技术的不断发展与进步,数字电视广播.移动视频点播等对数据吞吐量要 ...
- matlab画2fsk频谱,2fsk信号调制解调频谱的matlab仿真
2fsk信号调制解调频谱的matlab仿真 2FSK信号的调制解调与频谱绘制的matlab仿真 a=randint(1,16); t=0.0001:0.001:1; inisig=a(ceil(t./ ...
- 基于matlab的正交振幅调制与解调,正交幅度调制(QAM)及解调Matlab仿真
正交幅度调制(QAM)及解调Matlab仿真实验目的: 1.掌握QAM及解调原理与特性: 2.了解星座图的原理及用途. 实验内容: 1.编写MATLAB程序仿真QAM及相干解调: 2.观察I.Q两路基 ...
- 基于能量检测的调制方式识别算法MATLAB仿真,识别不同SNR下的MFSK和MPSK
UP目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 随着无线通信的快速发展,用户对通信质量的要求越来越高,同时无线设备的大幅度增长,使得频谱资源显得更加重要.认知无线电(Cognitiv ...
- 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM
目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...
- LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真
LTE(长期演进)下行链路 PHY(物理)层处理链路可以认为是下行链路共享信道(DLSCH)和物理下行链路共享信道(PDSCH)处理的组合.DLSCH 即 下行链路传输信道 TrCH. LTE下行链路 ...
- 【调制识别】基于高阶累积量的调制方式识别算法matlab仿真,课题识别BPSK, QPSK, 16QAM, 64QAM
目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 由于数字调制信号越来越多地应用于通信信号处理领域,因此对数字信号调制识别的研究也越来越多.传统的调制识别的判决方法有:决策判决法.高阶 ...
- m无线通信的调制解调过程的matlab仿真,包括ASK,FSK,PSK
目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK).频移键控(FS ...
- 基于ZF均衡算法的OFDM调制解调系统的MATLAB仿真
UP目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是M ...
最新文章
- [SDOI2016]生成魔咒
- 向模拟器发短信打电话的方法
- 多线程服务器模型-one loop per thread
- android sharedUserId 共享用户
- 学计算机的事物多线程看不懂,看不懂CPU?学会看CPU只需明白这5点,如此简单!...
- twisted系列教程六–继续重构twisted poetry client
- vue面试有哪些插件_vue 前端框架面试问题汇总
- 没有为 ucrtbase.dll 加载符号_深入理解Java虚拟机(类加载机制)
- 吴恩达深度学习5.3练习_Sequence Models_Neural machine translation with attention
- Python、PyCharm、Django框架安装
- GCC 11.1 进行 C++ 多项优化
- Silverlight Blend动画设计系列二:旋转动画(RotateTransform)
- JDK问题--linux下java unrecognized class file version错误的解决
- java编程对电脑配置,编程对电脑配置要求高吗?
- psd导出jpg太大_【设计】PSD导出JPG文件非常大解决办法
- 易我电脑迁移 v12.2
- 上汽拿下国内首张道路测试用牌照
- 专访郑博闻:13岁的iOS开发者和创业者
- Cannot pull, git cannot resolve reference ORIG_HEAD
- PID学习笔记:模拟加热系统的PID控制