Matlab通信仿真系列——Hilbert希尔伯特变换和带通信号的低通等效

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、Hilbert希尔伯特变换
1、定义
2、Matlab频谱图绘制
二、带通信号的低通表示
1、定义
2、Matlab频谱图绘制
三、Matlab源码
1、Hilbert希尔伯特变换源码
2、带通信号的低通表示源码

本节内容
传输信号的信道带宽限制在以载波为中心的一个频段上,满足带宽远小于载波频率的系统称为窄带带通系统。通信系统发送端的调制产生带通信号,接收端的解调恢复数字信号,两种均包含了频率转换。将所有的带通信号与信道简化成等效低通信号与信道,便于系统性能分析。
一、Hilbert希尔伯特变换
1、定义

实信号只包含振幅信息,而缺乏相位信息。而复信号则包含了原始信号的相位信息,可以用于分析信号的相位特性。在某些应用中,例如信号处理、通信系统中,相位信息对于理解信号的特性和进行后续处理非常重要。
Hilbert(希尔伯特)变换可以将实信号转换为复信号,常用于提取信号的相位信息,使得我们能够更全面地分析和处理信号,这在雷达通信领域中都很有用,尤其是在带通信号处理中。
一个带通信号x(t),x(t)的正频域表示式:X+(f)=2u(f)X(f)
其中X(f)为x(t)的傅里叶变换,u(f)为单位阶跃函数。
等效时域表达式为:
在这里插入图片描述

信号x+(t)称为解析信号或x(t)的预包络。
Hilbert变换器,将下图中冲激响应为h(t)的滤波器称为hilbert变换器。其对应的频率响应为H(f)。
|H(f)|=1,相位响应,当f>0时,相位为-1/2π;当f<0时,相位为1/2π。一个对输入信号所有频率的1/2π移相器。
在这里插入图片描述

2、Matlab频谱图绘制
Matlab提供了Hilbert变换函数hilbert,用于产生复数序列,即虚部。

matlab代码示例:
信号x(t)=e^(-10|t-5|)×cos(2π×20t),
其中0≤t≤10;求
①绘制该信号和它的幅度谱
②求信号的解析信号,并绘制解析信号的幅度谱

在这里插入图片描述
在这里插入图片描述

使用fftshift便于观察傅里叶变换。
解析信号中只包含了正频率部分,且频谱幅度是输入信号频谱幅度的两倍。
二、带通信号的低通表示
1、定义

带通信号的等效低通信号xl(t)
低频信号xc(t)和xs(t)分别施加在载波分量cos2πfct和sin2πfct上的幅度调制信号。称为带通信号x(t)的两个正交分量,xc(t)为同相分量,xs(t)为正交分量。
Re表示括号中复值量的实部。低通信号xl(t)称为实信号的复包络,也就是等效低通信号。
在这里插入图片描述
等效低通信号xl(t)的另一种表示方法
信号a(t)为x(t)的包络,θ(t)为s(t)的相位。
在这里插入图片描述
2、Matlab频谱图绘制
Matlab提供了Hilbert变换函数hilbert,用于产生复数序列,即虚部。

matlab代码示例:
信号x(t)=e^(-10|t-5|)×cos(2π×20t),
其中0≤t≤10;求
①fc=20Hz,x(t)的低通等效,绘制幅度谱和同相分量
②fc=10Hz,x(t)的低通等效,绘制幅度谱和同相分量

在这里插入图片描述
在这里插入图片描述

三、Matlab源码
1、Hilbert希尔伯特变换源码

clear all;
clc;
%信号的载波频率为20Hz,取采样频率100Hz
ts=0.01;              %采样时间间隔0.01s
fs=1/ts;              %信号的采样频率取100Hz
t=0:ts:10;
df=fs/length(t);            %DFT的频率分辨率
f=-50:df:50-df;             %生成频率矢量
%生成输入信号
x=exp(-10*abs(t-5)).*cos(2*pi*20*t);
%fft求频谱
%x为模拟信号,根据抽样定理,得到的FFT值是抽样后的,
%除以fs得到原模拟信号的傅里叶变换
X=fft(x)/fs;
%求x的解析信号xa
xa=hilbert(x);
Xa=fft(xa)/fs;
%fftshift移动零频点到频谱中间
%重新排列,便于观察傅立叶变换
subplot(3,1,1)
plot(t,x);
title('输入信号x');
xlabel('时间t');
subplot(3,1,2)
plot(f,fftshift(abs(X)));
title('信号x幅度谱');
xlabel('频率f');
subplot(3,1,3)
plot(f,abs(X));
title('未使用fftshift信号x幅度谱');
xlabel('频率f');


figure
subplot(3,1,1)
plot(t,abs(xa));
title('信号xa包络');
xlabel('时间t');
subplot(3,1,2)
plot(f,fftshift(abs(Xa)));
title('信号xa幅度谱');
xlabel('频率f');
subplot(3,1,3)
plot(f,abs(Xa));
title('未使用fftshift信号xa幅度谱');
xlabel('频率f');

2、带通信号的低通表示源码

clear all;
clc;
%信号的载波频率为20Hz,取采样频率100Hz
ts=0.01;            %采样时间间隔0.01s
fs=1/ts;            %信号的采样频率取100Hz
t=0:ts:10;
df=fs/length(t);            %DFT的频率分辨率
f=-50:df:50-df;             %生成频率矢量
%生成输入信号
x=exp(-10*abs(t-5)).*cos(2*pi*20*t);
%求x的解析信号xa
xa=hilbert(x);
%fft求频谱
%x为模拟信号,根据抽样定理,得到的FFT值是抽样后的,
%除以fs得到原模拟信号的傅里叶变换
%fc=20Hz的低通信号频谱求解
fc1=20;
xl1=xa.*exp(-j*2*pi*fc1*t);
Xl1=fft(xl1)/fs;
%fftshift移动零频点到频谱中间
%重新排列,便于观察傅立叶变换
subplot(2,1,1)
plot(t,real(xl1));      %同相分量为实部
title('fc=20Hz时的低通信号同相分量');
xlabel('时间t');
subplot(2,1,2)
plot(f,fftshift(abs(Xl1)));
title('fc=20Hz是的低通信号幅度谱');
xlabel('频率f');


figure;
%fc=10Hz的低通信号频谱求解
fc2=10;
xl2=xa.*exp(-j*2*pi*fc2*t);
Xl2=fft(xl2)/fs;
%fftshift移动零频点到频谱中间
%重新排列,便于观察傅立叶变换
subplot(2,1,1)
plot(t,real(xl2));      %同相分量为实部
title('fc=10Hz时的低通信号同相分量');
xlabel('时间t');
subplot(2,1,2)
plot(f,fftshift(abs(Xl2)));
title('fc=10Hz是的低通信号幅度谱');
xlabel('频率f');
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰的FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值