ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【调制解调】SSB 单边带调幅
[打印本页]
作者:
水军大提督
时间:
2023-7-12 10:15
标题:
【调制解调】SSB 单边带调幅
说明
学习数字信号处理算法时整理的学习笔记。同系列文章目录可见
《DSP 学习之路》目录
,代码已上传到
Github - ModulationAndDemodulation
。本篇介绍 SSB 单边带调幅信号的调制与解调,内附全套 MATLAB 代码。
目录
说明
1. SSB 调制算法
1.1 算法描述
1.2 滤波法及 SSB 信号的频域表示
1.3 相移法及 SSB 信号的时域表示
1.4 滤波法 SSB 信号调制示例
1.5 相移法 SSB 信号调制示例
2. SSB 解调算法
2.1 插入载波包络检波法
2.2 相干解调(同步检测)
2.3 数字正交解调
2.4 希尔伯特变换解调
3. SSB 仿真(MATLAB Communications Toolbox)
参考资料
附录代码
附.1 文件 lpf_filter.m
附.2 文件 hpf_filter.m
附.3 文件 mod_lsb_method1.m
附.4 文件 mod_lsb_method2.m
附.5 文件 mod_usb_method1.m
附.6 文件 mod_usb_method2.m
附.7 文件 main_modSSB_example1.m
附.8 文件 main_modSSB_example2.m
附.9 文件 demod_ssb_method1.m
附.10 文件 demod_ssb_method2.m
附.11 文件 demod_ssb_method3.m
附.12 文件 demod_ssb_method4.m
附.13 文件 main_demodSSB_example1.m
附.14 文件 main_demodSSB_example2.m
附.15 文件 main_demodSSB_example3.m
附.16 文件 main_demodSSB_example4.m
附.17 文件 main_CommSSB_example.m
1. SSB 调制算法
1.1 算法描述
DSB 信号两个边带中的任意一个都包含了调制信号频谱 \(M(\omega)\) 的所有信息,因此仅传输其中一个边带即可,这样既节省发送功率,还节省 \(1/2\) 的传输带宽,这种方式称为
单边带调制
(SSB, Single Side Band)。SSB 信号的带宽等于基带信号(调制信号)带宽 \(f_H\),即 \(B_{SSB}=f_{H}\),根据传输的边带位置,SSB 信号可分为
上边带信号
(USB, Upper Side Band)和
下边带信号
(LSB, Lower Side Band)。SSB 信号是将双边带信号中的一个边带滤掉而形成的,根据滤除方法的不同,产生SSB 信号的方法有:滤波法和相移法。
1.2 滤波法及 SSB 信号的频域表示
产生 SSB 信号最直观的方法是,先产生一个双边带 DSB 信号,然后让其通过一个边带滤波器(理想高通滤波器或理想低通滤波器),滤除不必要的边带,即可得到单边带 SSB 信号,这种方法被称为
滤波法
。其原理框图如下:
其中 \(H_{SSB}(\omega)\) 为单边带滤波器的传输函数,当它为理想高通滤波器时,可以滤除 DSB 信号的下边带,获得上边带 USB 信号:
\[H_{SSB}(\omega)=H_{USB}(\omega)=\begin{cases} 1, & \text {if ${\lvert}{\omega}{\rvert} > \omega_c$} \\[1em]0, & \text {if ${\lvert}{\omega}{\rvert} \leq \omega_c$} \tag{1}\end{cases}\]
当 \(H_{SSB}(\omega)\) 为理想低通滤波器时,可以滤除 DSB 信号的上边带,获得下边带 LSB 信号:
\[H_{SSB}(\omega)=H_{LSB}(\omega)=\begin{cases} 1, & \text {if ${\lvert}{\omega}{\rvert} < \omega_c$} \\[1em]0, & \text {if ${\lvert}{\omega}{\rvert} \geq \omega_c$} \tag{2}\end{cases}\]
因此,SSB 信号的频谱表达式为:
\[S_{SSB}(\omega)=S_{DSB}(\omega) \cdot H(\omega) \tag{3}\]
滤波法的技术难点是边带滤波器的制作,因为实际滤波器都不具有理想滤波器这么陡峭的截止特性,而是有一定的过渡带。例如,若经过滤波后的语音信号的最低频率为 \(300Hz\),则上、下边带之间的频率间隔为 \(600Hz\),即允许过渡带为 \(600Hz\)。实现滤波器的难易程度与过渡带相对载频的归一化值有关,该值越小,边带滤波器就越难实现。因此在 \(600Hz\) 过渡带和不太高的载频情况下,滤波器不难实现;但当载频较高时,采用一级调制直接滤波的方法已不可能实现单边带调制。这时可以采用多级(一般采用两级)DSB 调制及边带滤波的方法,即先在较低的载频上进行 DSB 调制,目的是增大过渡带的归一化值,以利于滤波器的制作,经单边带滤波后再在要求的载频上进行第二次调制及滤波(常称为变频)。但当调制信号中含有直流及低频分量时滤波法就不适用了。
1.3 相移法及 SSB 信号的时域表示
SSB 信号时域表达式的推导比较困难,需借助希尔伯特变换来表述,先以单频调制为例,然后推广到一般情况。设单频调制信号为:
\[m(t)=A_mcos(\omega_mt) \tag{4}\]
载波为:
\[c(t)=cos(\omega_ct) \tag{5}\]
则 DSB 信号的时域表达式为:
\[\begin{aligned}s_{DSB}(t)&=A_mcos(\omega_mt)cos(\omega_ct) \\[1em]&=\frac{1}{2}A_mcos\left[(\omega_c+\omega_m)t\right]+\frac{1}{2}A_mcos\left[(\omega_c-\omega_m)t\right]\end{aligned}\]
保留上边带,则有:
\[\begin{aligned}s_{USB}(t)&=\frac{1}{2}A_mcos\left[(\omega_c+\omega_m)t\right] \\[1em]&=\frac{1}{2}A_mcos(\omega_mt)cos(\omega_ct)-\frac{1}{2}A_msin(\omega_mt)sin(\omega_ct)\end{aligned} \tag{6}\]
保留下边带,则有:
\[\begin{aligned}s_{LSB}(t)&=\frac{1}{2}A_mcos\left[(\omega_c-\omega_m)t\right] \\[1em]&=\frac{1}{2}A_mcos(\omega_mt)cos(\omega_ct)+\frac{1}{2}A_msin(\omega_mt)sin(\omega_ct)\end{aligned} \tag{7}\]
把上、下边带公式合并起来写,可以写成:
\[s_{SSB}(t)=\frac{1}{2}A_mcos(\omega_mt)cos(\omega_ct) \mp \frac{1}{2}A_msin(\omega_mt)sin(\omega_ct) \tag{8}\]
式中:“\(-\)” 表示上边带 USB 信号,“\(+\)” 表示下边带 LSB 信号。在式 \((8)\) 中 \(A_msin(\omega_mt)\) 可以看成是 \(A_mcos(\omega_mt)\) 相移 \(\pi/2\) 的结果,而幅度大小保持不变,我们把这一过程称为希尔伯特变换,记为 “\(\land\)”,则有:
\[A_m\hat{cos}(\omega_mt)=A_msin(\omega_mt)\]
据此,式 \((8)\) 可以改写为:
\[s_{SSB}(t)=\frac{1}{2}A_mcos(\omega_mt)cos(\omega_ct) \mp \frac{1}{2}A_m\hat{cos}(\omega_mt)sin(\omega_ct)\]
这个关系虽然是在单频调制下得到的,但是因为任意一个基带波形总可以表示成许多正弦信号之和,所以不失一般性,可得到调制信号为任意信号时 SSB 信号的
时域表达式
,式中 \(\hat{m}(t)\) 为 \(m(t)\) 的希尔伯特变换:
\[s_{SSB}(t)=\frac{1}{2}m(t)cos(\omega_ct) \mp \frac{1}{2}\hat{m}(t)sin(\omega_ct) \tag{9}\]
若 \(M(\omega)\) 为 \(m(t)\) 的傅里叶变换,则 \(\hat{m}(t)\) 的傅里叶变换为:
\[\hat{M}(\omega)=M(\omega) \cdot H_h(\omega)=M(\omega) \cdot \left[-jsgn(\omega)\right] \tag{10}\]
式中 \(sgn(\omega)\) 为符号函数:
\[sgn(\omega)=\begin{cases} 1, & \text {if $\omega > 0$} \\[1em]0, & \text {if $\omega = 0$} \\[1em]-1, & \text {if $\omega < 0$}\end{cases}\]
式 \((10)\) 表明:除直流外,模值 \(H_h(\omega)=1\),希尔伯特滤波器 \(H_h(\omega)\) 将 \(m(t)\) 中的正频率偏移 \(-\pi/2\),负频率偏移 \(\pi/2\) 后就可以得到 \(\hat{m}(t)\)。根据 SSB 信号时域表达式式 \((9)\) 可以设计出相移法 SSB 调制器的一般模型:
相移法的思路是利用相移网络 \(H_h(\omega)\) 对载波和调制信号进行适当的相移,以便在合成过程中将其中的一个边带抵消而获得 SSB 信号,这种方法不需要滤波器具有陡峭的截止特性,不论载频有多高,均可一次实现 SSB 调制。相移法的技术难点是 \(H_h(\omega)\) 的制作,它必须对调制信号 \(m(t)\) 的所有频率成分均精确相移 \(\pi/2\),达到这一点比较困难,可以采用
维弗法
(Weaver),感兴趣的可查阅相关资料。
1.4 滤波法 SSB 信号调制示例
调制信号 \(m(t)\) 可以是确知信号,也可以是随机信号。当 \(m(t)\) 是确知信号时,不妨假设 \(m(t)\) 的时域表达式如下:
\[m(t) = sin(2{\pi}{f_m}t)+cos({\pi}{f_m}t) \tag{11}\]
各调制参数取值:\(f_m=2500Hz\),\(f_c=20000Hz\)。信号采样率 \(f_s=8{f_c}\),仿真总时长为 \(2s\)。LSB 调制效果如下图所示(为了美观,时域只显示前 500 个点),调制信号 \(m(t)\) 双边幅度谱有四根离散谱线(\({\pm}2500Hz\)、\({\pm}1250Hz\)),DSB 信号有八根离散谱线(\(\pm17500Hz\)、\(\pm18750Hz\)、\(\pm21250Hz\)、\(\pm22500Hz\)),LSB 信号有四根离散谱线(\(\pm17500Hz\)、\(\pm18750Hz\))。
USB 调制效果如下图所示(为了美观,时域只显示前 500 个点),调制信号 \(m(t)\) 双边幅度谱有四根离散谱线(\({\pm}2500Hz\)、\({\pm}1250Hz\)),DSB 信号有八根离散谱线(\(\pm17500Hz\)、\(\pm18750Hz\)、\(\pm21250Hz\)、\(\pm22500Hz\)),USB 信号有四根离散谱线(\(\pm21250Hz\)、\(\pm22500Hz\))。
代码详见 mod_lsb_method1.m、mod_usb_method1.m、main_modSSB_example1.m。
1.5 相移法 SSB 信号调制示例
使用 1.4 节中相同的调制信号,LSB 调制效果如下图所示(为了美观,时域只显示前 500 个点),调制信号 \(m(t)\) 双边幅度谱有四根离散谱线(\({\pm}2500Hz\)、\({\pm}1250Hz\)),\(m(t)\) 的希尔伯特变换 \(\hat{m}(t)\) 有四根离散谱线(\({\pm}2500Hz\)、\({\pm}1250Hz\)),LSB 信号有四根离散谱线(\(\pm17500Hz\)、\(\pm18750Hz\))。
USB 调制效果如下图所示(为了美观,时域只显示前 500 个点),调制信号 \(m(t)\) 双边幅度谱有四根离散谱线(\({\pm}2500Hz\)、\({\pm}1250Hz\)),\(m(t)\) 的希尔伯特变换 \(\hat{m}(t)\) 有四根离散谱线(\({\pm}2500Hz\)、\({\pm}1250Hz\)),USB 信号有四根离散谱线(\(\pm21250Hz\)、\(\pm22500Hz\))。
代码详见 mod_lsb_method2.m、mod_usb_method2.m、main_modSSB_example2.m。
2. SSB 解调算法
解调是调制的逆过程,其作用是从接收的已调信号中恢复原基带信号(即调制信号)。SSB 信号的包络不再与调制信号 \(m(t)\) 的变化规律一致,因而不能采用简单的包络检波来恢复调制信号,通常采用相干解调的方法来进行解调。另一种方法是,插入很强的载波,使其成为或近似为 AM 信号,则可利用包络检波器恢复调制信号,这种方法被称为
插入载波包络检波法
,为了保证检波质量,插入的载波振幅应远大于信号的振幅,同时也要求插入的载波与调制载波同频同相。下面介绍四种解调方法并对 1.5 节中的 SSB 信号进行解调。
2.1 插入载波包络检波法
插入幅值为 \(A_0\) 的载波,得到一个近似的 AM 信号,使用 AM 解调器进行解调即可,步骤如下:
第一步
:加上载波 \({A_0}cos{\omega_ct}\),其中 \(A_0 \geq {\lvert}{s_{SSB}(t)}{\rvert}_{max}\),获得 AM 信号。
第二步
:使用 AM 解调器进行解调。
对 1.5 节中的 LSB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,解调后幅度放大系数 \(k=\overline{{\lvert}m(t){\rvert}}/\overline{{\lvert}\hat{m}(t){\rvert}}\approx2.09\),使用这个系数放大解调信号幅值,然后计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-k\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.2282\)。
对 1.5 节中的 USB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,解调后幅度放大系数 \(k=\overline{{\lvert}m(t){\rvert}}/\overline{{\lvert}\hat{m}(t){\rvert}}\approx2.09\),使用这个系数放大解调信号幅值,然后计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-k\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.2282\),与 LSB 相同。
代码详见 demod_ssb_method1.m 和 main_demodSSB_example1.m。AM 解调器详见本人同系列博客
【调制解调】AM 调幅
。更改插入载波的初始相位为 \({\phi_0}=\pi/4,\pi/2\),或者更改插入载波的中心频率为 \(0.8f_c,1.2f_c\) 后,解调效果变差,说明这种方法对插入载波同频同相的要求较高。
2.2 相干解调(同步检测)
将 SSB 信号与同频同相的相干载波相乘,得到:
\[\begin{aligned}s_{SSB}(t){\cdot}cos{(\omega_ct)}&={\left[\frac{1}{2}m(t)cos(\omega_ct) \mp \frac{1}{2}\hat{m}(t)sin(\omega_ct)\right]}{\cdot}cos{(\omega_ct)}\\[1em]&=\frac{1}{2}m(t)cos^2(\omega_ct) \mp \frac{1}{2}\hat{m}(t)sin(\omega_ct)cos(\omega_ct) \\[1em]&=\frac{1}{4}m(t)\left[1+cos(2\omega_ct)\right] \mp \frac{1}{4}\hat{m}(t)sin(2\omega_ct) \\[1em]&=\frac{1}{4}m(t)+\frac{1}{4}m(t)cos(2\omega_ct) \mp \frac{1}{4}\hat{m}(t)sin(2\omega_ct)\end{aligned} \tag{12}\]
然后通过一个低通滤波器即可获得解调结果,步骤如下:
第一步
:乘以相干载波(即乘以 \(4cos({\omega_ct}+{\phi_0})\),前面的 4 被用来做幅度补偿。
第二步
:低通滤波器滤除高频载波,滤除 \(2{\omega}_c\)。
对 1.5 节中的 LSB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0022\)。
对 1.5 节中的 USB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0022\),与 LSB 相同。
代码详见 demod_ssb_method2.m 和 main_demodSSB_example2.m。更改相干载波的初始相位为 \({\phi_0}=\pi/4,\pi/2\),或者更改相干载波的中心频率为 \(0.8f_c,1.2f_c\) 后,解调效果变差,说明这种方法对相干载波同频同相的要求也较高。
2.3 数字正交解调
SSB 数字正交解调一般有以下两个步骤,它与相干解调(同步检测)法是等效的:
第一步
:乘以正交相干载波得到 \({s_I}(t)\) 与 \({s_Q}(t)\),即 \({s_I}(t)=4s(t)cos({\omega_ct}+{\phi_0})\),\({s_Q}(t)=-4s(t)sin({\omega_ct}+{\phi_0})\),前面的 4 被用来做幅度补偿。
第二步
:低通滤波器滤除 \({s_I}(t)\) 与 \({s_Q}(t)\) 中的高频分量,所得的 \(s_I(t)\) 即为解调结果。
对 1.5 节中的 LSB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0022\)。
对 1.5 节中的 USB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0022\),与 LSB 相同。
代码详见 demod_ssb_method3.m 和 main_demodSSB_example3.m。与相干解调(同步检测)一样,这种方法对相干载波同频同相的要求较高。
2.4 希尔伯特变换解调
根据 Hilbert 变换的性质,在 \(f_c \gg f_{max}\) 的条件下(\(f_c\) 为信号的载波频率,\(f_{max}\) 为调制信号的最大频率分量),有以下近似的表达式(USB 信号时为 “\(+\)”,LSB 信号时为 “\(-\)”):
\[\hat{s}_{SSB}(t)=\frac{1}{2}m(t)sin(\omega_ct) \pm \frac{1}{2}\hat{m}(t)cos(\omega_ct) \tag{13}\]
可据此设计出以下解调方法:
联立式 \((9)\) 和式 \((13)\) 可得解调输出为:
\[\begin{aligned}m_o(t)&=s(t)cos(\omega_ct)+\hat{s}(t)sin(\omega_ct) \\[1em]&=\left[\frac{1}{2}m(t)cos(\omega_ct) \mp \frac{1}{2}\hat{m}(t)sin(\omega_ct)\right] \cdot cos(\omega_ct)\\[1em]&\quad\quad+\left[\frac{1}{2}m(t)sin(\omega_ct) \pm \frac{1}{2}\hat{m}(t)cos(\omega_ct)\right] \cdot sin(\omega_ct)\\[1em]&=\frac{1}{2}m(t)cos^2(\omega_ct)+\frac{1}{2}m(t)sin^2(\omega_ct)\\[1em]&=\frac{1}{2}m(t)\end{aligned} \tag{14}\]
这一方法的解调步骤如下(注意:这一解调方法需满足的条件是 \(f_c \gg f_{max}\)):
第一步
:计算信号 \(s_{SSB}(t)\) 的希尔伯特变换 \(\hat{s}_{SSB}(t)\)。
第二步
:\(s_{SSB}(t)\) 与 \(\hat{s}_{SSB}(t)\) 分别乘以正交载波 \(2cos(\omega_ct+{\phi_0})\) 与 \(2sin(\omega_ct+{\phi_0})\) 后相加,前面的 2 被用来做幅度补偿,获得解调输出 \(m_o(t)=2s_{SSB}(t)cos(\omega_ct)+2\hat{s}_{SSB}(t)sin(\omega_ct)\)。
对 1.5 节中的 LSB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0032\)。
对 1.5 节中的 USB 信号,设定信噪比 \(SNR=50dB\),解调效果如下,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0032\),与 LSB 相同。
代码详见 demod_ssb_method4.m 和 main_demodSSB_example4.m。更改正交载波的初始相位为 \({\phi_0}=\pi/4,\pi/2\),或者更改正交载波的中心频率为 \(0.8f_c,1.2f_c\) 后,解调效果变差,说明这种方法对正交载波同频同相的要求也较高。
3. SSB 仿真(MATLAB Communications Toolbox)
MATLAB 的
Communications Toolbox
中提供了 SSB 调制函数
ssbmod
,高斯白噪声函数
awgn
,以及 SSB 解调函数
ssbdemod
,可以很方便地完成 SSB 信号仿真。使用这三个函数实现上面 1.4 节中确知信号 \(m(t)\) 的 USB 调制解调,调制后加噪声的效果如下:
USB 解调效果如下,解调信号与调制信号波形基本重回,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0036\)。
使用这三个函数实现上面 1.4 节中确知信号 \(m(t)\) 的 LSB 调制解调,调制后加噪声的效果如下:
LSB 解调效果如下,解调信号与调制信号波形基本重回,计算误差,有:\(\sqrt{\sum{{\lvert}m(t_i)-\hat{m}(t_i){\rvert}^2}}/\sqrt{\sum{{\lvert}m(t_i){\rvert}^2}}\approx0.0036\)。
代码详见附录 main_CommSSB_example.m。
参考资料
[1] 楼才义,徐建良,杨小牛.软件无线电原理与应用[M].电子工业出版社,2014.
[2] 樊昌信,曹丽娜.通信原理.第7版[M].国防工业出版社,2012.
[3]
CSDN - 通信原理之模拟幅度调制(线性调制)详解
。
[4]
简书 - 第五章 模拟调制系统
。
[5]
CSDN - 现代通信原理6.2:单边带(SSB)调制
。
[6]
知乎 - 希尔伯特变换如何理解?
。
[7]
知乎 - matlab希尔伯特变换实现(Hilbert transfrom)
。
附录代码
附.1 文件 lpf_filter.m
function sig_lpf = lpf_filter(sig_data, cutfre)
% LPF_FILTER 自定义理想低通滤波器
% 输入参数:
% sig_data 待滤波数据
% cutfre 截止频率,范围 (0,1)
% 输出参数:
% sig_lpf 低通滤波结果
% @author 木三百川
nfft = length(sig_data);
lidx = round(nfft/2-cutfre*nfft/2);
ridx = nfft - lidx;
sig_fft_lpf = fftshift(fft(sig_data));
sig_fft_lpf([1:lidx,ridx:nfft]) = 0;
sig_lpf = real(ifft(fftshift(sig_fft_lpf)));
end
复制代码
附.2 文件 hpf_filter.m
function sig_hpf = hpf_filter(sig_data, cutfre)
% HPF_FILTER 自定义理想高通滤波器
% 输入参数:
% sig_data 待滤波数据
% cutfre 截止频率,范围 (0,1)
% 输出参数:
% sig_hpf 高通滤波结果
% @author 木三百川
nfft = length(sig_data);
lidx = round(nfft/2-cutfre*nfft/2);
ridx = nfft - lidx;
sig_fft_hpf = fftshift(fft(sig_data));
sig_fft_hpf(lidx:ridx) = 0;
sig_hpf = real(ifft(fftshift(sig_fft_hpf)));
end
复制代码
附.3 文件 mod_lsb_method1.m
function [ sig_lsb ] = mod_lsb_method1(fc, fs, mt, t)
% MOD_LSB_METHOD1 LSB 下边带调幅(滤波法)
% 输入参数:
% fc 载波中心频率
% fs 信号采样率
% mt 调制信号
% t 采样时间
% 输出参数:
% sig_lsb LSB 下边带调幅实信号
% @author 木三百川
% 生成 DSB 信号
ct = cos(2*pi*fc*t);
sig_dsb = mt.*ct; % DSB 双边带调幅信号
% 使用理想低通滤波器获得 LSB 信号
sig_lsb = lpf_filter(sig_dsb, fc/(fs/2));
% 绘图
nfft = length(sig_lsb);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_lsb));
subplot(3,2,1);
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('调制信号m(t)');
subplot(3,2,2);
plot(freq, 10*log10(fftshift(abs(fft(mt,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('调制信号m(t)双边幅度谱');
subplot(3,2,3);
plot(t(1:plot_length), sig_dsb(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('DSB双边带调幅信号s(t)');
subplot(3,2,4);
plot(freq, 10*log10(fftshift(abs(fft(sig_dsb,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('DSB双边带调幅信号s(t)双边幅度谱');
subplot(3,2,5);
plot(t(1:plot_length), sig_lsb(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('LSB下边带调幅信号s(t)');
subplot(3,2,6);
plot(freq, 10*log10(fftshift(abs(fft(sig_lsb,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('LSB下边带调幅信号s(t)双边幅度谱');
end
复制代码
附.4 文件 mod_lsb_method2.m
function [ sig_lsb ] = mod_lsb_method2(fc, fs, mt, t)
% MOD_LSB_METHOD2 LSB 下边带调幅(相移法)
% 输入参数:
% fc 载波中心频率
% fs 信号采样率
% mt 调制信号
% t 采样时间
% 输出参数:
% sig_lsb LSB 下边带调幅实信号
% @author 木三百川
% 计算 m(t) 的希尔伯特变换(相移)
hmt = imag(hilbert(mt));
% 与正交载波相合成
sig_lsb = 1/2*mt.*cos(2*pi*fc*t)+1/2*hmt.*sin(2*pi*fc*t);
% 绘图
nfft = length(sig_lsb);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_lsb));
subplot(3,2,1);
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('调制信号m(t)');
subplot(3,2,2);
plot(freq, 10*log10(fftshift(abs(fft(mt,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('调制信号m(t)双边幅度谱');
subplot(3,2,3);
plot(t(1:plot_length), hmt(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('调制信号m(t)希尔伯特变换');
subplot(3,2,4);
plot(freq, 10*log10(fftshift(abs(fft(hmt,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('调制信号m(t)希尔伯特变换双边幅度谱');
subplot(3,2,5);
plot(t(1:plot_length), sig_lsb(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('LSB下边带调幅信号s(t)');
subplot(3,2,6);
plot(freq, 10*log10(fftshift(abs(fft(sig_lsb,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('LSB下边带调幅信号s(t)双边幅度谱');
end
复制代码
附.5 文件 mod_usb_method1.m
function [ sig_usb ] = mod_usb_method1(fc, fs, mt, t)
% MOD_USB_METHOD1 USB 上边带调幅(滤波法)
% 输入参数:
% fc 载波中心频率
% fs 信号采样率
% mt 调制信号
% t 采样时间
% 输出参数:
% sig_usb USB 上边带调幅实信号
% @author 木三百川
% 生成 DSB 信号
ct = cos(2*pi*fc*t);
sig_dsb = mt.*ct; % DSB 双边带调幅信号
% 使用理想高通滤波器获得 USB 信号
sig_usb = hpf_filter(sig_dsb, fc/(fs/2));
% 绘图
nfft = length(sig_usb);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_usb));
subplot(3,2,1);
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('调制信号m(t)');
subplot(3,2,2);
plot(freq, 10*log10(fftshift(abs(fft(mt,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('调制信号m(t)双边幅度谱');
subplot(3,2,3);
plot(t(1:plot_length), sig_dsb(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('DSB双边带调幅信号s(t)');
subplot(3,2,4);
plot(freq, 10*log10(fftshift(abs(fft(sig_dsb,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('DSB双边带调幅信号s(t)双边幅度谱');
subplot(3,2,5);
plot(t(1:plot_length), sig_usb(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('USB上边带调幅信号s(t)');
subplot(3,2,6);
plot(freq, 10*log10(fftshift(abs(fft(sig_usb,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('USB上边带调幅信号s(t)双边幅度谱');
end
复制代码
附.6 文件 mod_usb_method2.m
function [ sig_usb ] = mod_usb_method2(fc, fs, mt, t)
% MOD_USB_METHOD2 USB 上边带调幅(相移法)
% 输入参数:
% fc 载波中心频率
% fs 信号采样率
% mt 调制信号
% t 采样时间
% 输出参数:
% sig_usb USB 上边带调幅实信号
% @author 木三百川
% 计算 m(t) 的希尔伯特变换(相移)
hmt = imag(hilbert(mt));
% 与正交载波相合成
sig_usb = 1/2*mt.*cos(2*pi*fc*t)-1/2*hmt.*sin(2*pi*fc*t);
% 绘图
nfft = length(sig_usb);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_usb));
subplot(3,2,1);
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('调制信号m(t)');
subplot(3,2,2);
plot(freq, 10*log10(fftshift(abs(fft(mt,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('调制信号m(t)双边幅度谱');
subplot(3,2,3);
plot(t(1:plot_length), hmt(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('调制信号m(t)希尔伯特变换');
subplot(3,2,4);
plot(freq, 10*log10(fftshift(abs(fft(hmt,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('调制信号m(t)希尔伯特变换双边幅度谱');
subplot(3,2,5);
plot(t(1:plot_length), sig_usb(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('USB上边带调幅信号s(t)');
subplot(3,2,6);
plot(freq, 10*log10(fftshift(abs(fft(sig_usb,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('USB上边带调幅信号s(t)双边幅度谱');
end
复制代码
附.7 文件 main_modSSB_example1.m
clc;
clear;
close all;
% SSB 调制仿真(调制信号为确知信号,滤波法)
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% LSB 调制
[ sig_lsb ] = mod_lsb_method1(fc, fs, mt, t);
% USB 调制
[ sig_usb ] = mod_usb_method1(fc, fs, mt, t);
复制代码
附.8 文件 main_modSSB_example2.m
clc;
clear;
close all;
% SSB 调制仿真(调制信号为确知信号,相移法)
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% LSB 调制
[ sig_lsb ] = mod_lsb_method2(fc, fs, mt, t);
% USB 调制
[ sig_usb ] = mod_usb_method2(fc, fs, mt, t);
复制代码
附.9 文件 demod_ssb_method1.m
function [ sig_ssb_demod ] = demod_ssb_method1(sig_ssb_receive, fc, fs, t, phi0)
% DEMOD_SSB_METHOD1 SSB 插入载波包络检波法
% 输入参数:
% sig_ssb_receive SSB 接收信号,行向量
% fc 载波中心频率
% fs 信号采样率
% t 采样时间
% phi0 载波初始相位
% 输出参数:
% sig_ssb_demod 解调结果,与 sig_ssb_receive 等长
% @author 木三百川
% 第一步:插入载波
A0 = max(abs(sig_ssb_receive))/0.8;
sig_ssb2am = sig_ssb_receive + A0*cos(2*pi*fc*t+phi0);
% 第二步:使用 AM 解调器进行解调
[ sig_ssb_demod ] = demod_am_method4(sig_ssb2am, fs, t);
end
复制代码
附.10 文件 demod_ssb_method2.m
function [ sig_ssb_demod ] = demod_ssb_method2(sig_ssb_receive, fc, fs, t, phi0)
% DEMOD_SSB_METHOD2 SSB 相干解调(同步检测)
% 输入参数:
% sig_ssb_receive SSB 接收信号,行向量
% fc 载波中心频率
% fs 信号采样率
% t 采样时间
% phi0 载波初始相位
% 输出参数:
% sig_ssb_demod 解调结果,与 sig_ssb_receive 等长
% @author 木三百川
% 第一步:乘以相干载波
sig_ssbct = 4*sig_ssb_receive.*cos(2*pi*fc*t+phi0);
% 第二步:低通滤波
sig_ssb_demod = lpf_filter(sig_ssbct, fc/(fs/2));
end
复制代码
附.11 文件 demod_ssb_method3.m
function [ sig_ssb_demod ] = demod_ssb_method3(sig_ssb_receive, fc, fs, t, phi0)
% DEMOD_SSB_METHOD3 SSB 数字正交解调,与相干解调(同步检测)是等效的
% 输入参数:
% sig_ssb_receive SSB 接收信号,行向量
% fc 载波中心频率
% fs 信号采样率
% t 采样时间
% phi0 载波初始相位
% 输出参数:
% sig_ssb_demod 解调结果,与 sig_ssb_receive 等长
% @author 木三百川
% 第一步:乘以正交相干载波
sig_ssb_i = 4*sig_ssb_receive.*cos(2*pi*fc*t+phi0);
sig_ssb_q = -4*sig_ssb_receive.*sin(2*pi*fc*t+phi0);
% 第二步:低通滤波
sig_ssb_i_lpf = lpf_filter(sig_ssb_i, fc/(fs/2));
sig_ssb_q_lpf = lpf_filter(sig_ssb_q, fc/(fs/2));
sig_ssb_demod = sig_ssb_i_lpf;
end
复制代码
附.12 文件 demod_ssb_method4.m
function [ sig_ssb_demod ] = demod_ssb_method4(sig_ssb_receive, fc, t, phi0)
% DEMOD_SSB_METHOD4 SSB 希尔伯特变换解调
% 输入参数:
% sig_ssb_receive SSB 接收信号,行向量
% fc 载波中心频率
% t 采样时间
% phi0 载波初始相位
% 输出参数:
% sig_ssb_demod 解调结果,与 sig_ssb_receive 等长
% @author 木三百川
% 第一步:计算希尔伯特变换
hsig_ssb_receive = imag(hilbert(sig_ssb_receive));
% 第二步:乘以正交相干载波
sig_ssb_demod = 2*sig_ssb_receive.*cos(2*pi*fc*t+phi0)+2*hsig_ssb_receive.*sin(2*pi*fc*t+phi0);
end
复制代码
附.13 文件 main_demodSSB_example1.m
clc;
clear;
close all;
% SSB 解调仿真(调制信号为确知信号,插入载波包络检波法)
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% SSB 调制
[ sig_ssb_send ] = mod_usb_method2(fc, fs, mt, t);
% 加噪声
snr = 50; % 信噪比
sig_ssb_receive = awgn(sig_ssb_send, snr, 'measured');
% 插入载波包络检波法
phi0 = 0;
[ sig_ssb_demod ] = demod_ssb_method1(sig_ssb_receive, fc, fs, t, phi0);
% 绘图
nfft = length(sig_ssb_receive);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_ssb_receive));
subplot(1,2,1);
plot(t(1:plot_length), sig_ssb_receive(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('SSB接收信号');
subplot(1,2,2);
plot(freq, 10*log10(fftshift(abs(fft(sig_ssb_receive,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('SSB接收信号双边幅度谱');
figure;set(gcf,'color','w');
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
hold on;
plot(t(1:plot_length), sig_ssb_demod(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('解调效果');
legend('调制信号','解调信号');
coef = mean(abs(mt))/mean(abs(sig_ssb_demod));
fprintf('norm(调制信号 - %.2f * 解调信号)/norm(调制信号) = %.4f.\n', coef, norm(mt-coef*sig_ssb_demod)/norm(mt));
复制代码
附.14 文件 main_demodSSB_example2.m
clc;
clear;
close all;
% SSB 解调仿真(调制信号为确知信号,相干解调(同步检测))
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% SSB 调制
[ sig_ssb_send ] = mod_usb_method2(fc, fs, mt, t);
% 加噪声
snr = 50; % 信噪比
sig_ssb_receive = awgn(sig_ssb_send, snr, 'measured');
% 相干解调(同步检测)
phi0 = 0;
[ sig_ssb_demod ] = demod_ssb_method2(sig_ssb_receive, fc, fs, t, phi0);
% 绘图
nfft = length(sig_ssb_receive);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_ssb_receive));
subplot(1,2,1);
plot(t(1:plot_length), sig_ssb_receive(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('SSB接收信号');
subplot(1,2,2);
plot(freq, 10*log10(fftshift(abs(fft(sig_ssb_receive,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('SSB接收信号双边幅度谱');
figure;set(gcf,'color','w');
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
hold on;
plot(t(1:plot_length), sig_ssb_demod(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('解调效果');
legend('调制信号','解调信号');
coef = mean(abs(mt))/mean(abs(sig_ssb_demod));
fprintf('norm(调制信号 - %.2f * 解调信号)/norm(调制信号) = %.4f.\n', coef, norm(mt-coef*sig_ssb_demod)/norm(mt));
复制代码
附.15 文件 main_demodSSB_example3.m
clc;
clear;
close all;
% SSB 解调仿真(调制信号为确知信号,数字正交解调)
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% SSB 调制
[ sig_ssb_send ] = mod_usb_method2(fc, fs, mt, t);
% 加噪声
snr = 50; % 信噪比
sig_ssb_receive = awgn(sig_ssb_send, snr, 'measured');
% 数字正交解调
phi0 = 0;
[ sig_ssb_demod ] = demod_ssb_method3(sig_ssb_receive, fc, fs, t, phi0);
% 绘图
nfft = length(sig_ssb_receive);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_ssb_receive));
subplot(1,2,1);
plot(t(1:plot_length), sig_ssb_receive(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('SSB接收信号');
subplot(1,2,2);
plot(freq, 10*log10(fftshift(abs(fft(sig_ssb_receive,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('SSB接收信号双边幅度谱');
figure;set(gcf,'color','w');
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
hold on;
plot(t(1:plot_length), sig_ssb_demod(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('解调效果');
legend('调制信号','解调信号');
coef = mean(abs(mt))/mean(abs(sig_ssb_demod));
fprintf('norm(调制信号 - %.2f * 解调信号)/norm(调制信号) = %.4f.\n', coef, norm(mt-coef*sig_ssb_demod)/norm(mt));
复制代码
附.16 文件 main_demodSSB_example4.m
clc;
clear;
close all;
% SSB 解调仿真(调制信号为确知信号,希尔伯特变换解调)
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% SSB 调制
[ sig_ssb_send ] = mod_usb_method2(fc, fs, mt, t);
% 加噪声
snr = 50; % 信噪比
sig_ssb_receive = awgn(sig_ssb_send, snr, 'measured');
% 希尔伯特变换解调
phi0 = 0;
[ sig_ssb_demod ] = demod_ssb_method4(sig_ssb_receive, fc, t, phi0);
% 绘图
nfft = length(sig_ssb_receive);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_ssb_receive));
subplot(1,2,1);
plot(t(1:plot_length), sig_ssb_receive(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('SSB接收信号');
subplot(1,2,2);
plot(freq, 10*log10(fftshift(abs(fft(sig_ssb_receive,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('SSB接收信号双边幅度谱');
figure;set(gcf,'color','w');
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
hold on;
plot(t(1:plot_length), sig_ssb_demod(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('解调效果');
legend('调制信号','解调信号');
coef = mean(abs(mt))/mean(abs(sig_ssb_demod));
fprintf('norm(调制信号 - %.2f * 解调信号)/norm(调制信号) = %.4f.\n', coef, norm(mt-coef*sig_ssb_demod)/norm(mt));
复制代码
附.17 文件 main_CommSSB_example.m
clc;
clear;
close all;
% SSB 调制解调仿真(使用Communications Toolbox工具箱)
% @author 木三百川
% 调制参数
fm = 2500; % 调制信号参数
fc = 20000; % 载波频率
fs = 8*fc; % 采样率
total_time = 2; % 仿真时长,单位:秒
% 采样时间
t = 0:1/fs:total_time-1/fs;
% 调制信号为确知信号
mt = sin(2*pi*fm*t)+cos(pi*fm*t);
% SSB 调制
ini_phase = 0;
sig_ssb_send = ssbmod(mt,fc,fs,ini_phase); % LSB 调制
% sig_ssb_send = ssbmod(mt,fc,fs,ini_phase,'upper'); % USB 调制
% 加噪声
snr = 50; % 信噪比
sig_ssb_receive = awgn(sig_ssb_send, snr, 'measured');
% SSB 解调
[ sig_ssb_demod ] = ssbdemod(sig_ssb_receive, fc, fs, ini_phase);
% 绘图
nfft = length(sig_ssb_receive);
freq = (-nfft/2:nfft/2-1).'*(fs/nfft);
figure;set(gcf,'color','w');
plot_length = min(500, length(sig_ssb_receive));
subplot(1,2,1);
plot(t(1:plot_length), sig_ssb_receive(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('SSB接收信号');
subplot(1,2,2);
plot(freq, 10*log10(fftshift(abs(fft(sig_ssb_receive,nfft)/nfft))+eps));xlim([freq(1),freq(end)]);
xlabel('频率/hz');ylabel('幅度/dB');title('SSB接收信号双边幅度谱');
figure;set(gcf,'color','w');
plot(t(1:plot_length), mt(1:plot_length));xlim([t(1),t(plot_length)]);
hold on;
plot(t(1:plot_length), sig_ssb_demod(1:plot_length));xlim([t(1),t(plot_length)]);
xlabel('t/s');ylabel('幅度');title('解调效果');
legend('调制信号','解调信号');
coef = mean(abs(mt))/mean(abs(sig_ssb_demod));
fprintf('norm(调制信号 - %.2f * 解调信号)/norm(调制信号) = %.4f.\n', coef, norm(mt-coef*sig_ssb_demod)/norm(mt));
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4