微信公众号上线,搜索公众号小灰灰的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');