0 引言
通信系统中,经常需要对一个信号进行正交分解,即分解为同相分量和正交分量。由于希尔伯特变换可以提供90°的相位变化而不影响频谱分量的幅度,即对信号进行希尔伯特变换就相当于对该信号进行正交移相,使它成为自身的正交对。因此,希尔伯特变换在通信领域获得了广泛应用。
在传统的设计中,希尔伯特变换器可由一个FIR滤波器和一个时延模块实现,也可由一组滤波器对实现,而实现FIR型希尔伯特变换器的一个简单方法就是对原型低通滤波器作正弦/余弦变换。但是,无论哪种方法都需要通过计算对低通滤波器的系数进行转换,其计算繁琐且存在一定的误差。Matlab作为滤波器设计的基础软件,不仅可以快速有效地实现希尔伯特变换器的设计、分析仿真和最优化,而且可以直接计算出希尔伯特变换器的系数,加之Matlab具有强大的接口功能,为后续的设计提供了方便。
1 希尔伯特变换器的基本原理
连续时间信号x(t)的希尔伯特变换定义为:
由式(1)可得单位冲击响应h(t)=1/(πt),由于jh(t)=j/(πt)的傅里叶变换是符号函数sgn(w),所以希尔伯特变换器的频率特性为:
信号x(t)的希尔伯特变换可以看成是信号x(t)通过一个幅度为1的全通滤波器输出,信号通过希尔伯特变换器后,其负频率成分作+90°的相移,而正频率成分作-90°的相移。
这类滤波器要求滤波器的零频响应为0,若滤波器阶数为偶数,则还要求Nyquist频率(归一化频率为1)处的响应为0。即如果滤波器的阶数为偶数,那么增益在频率为0 Hz和fs/2处必须降为零,希尔伯特滤波器必须是一个带通滤波器。如果滤波器的阶数为奇数,那么增益在频率为0 Hz处必须降为零,希尔伯特滤波器必须是一个高通滤波器。
2 希尔伯特变换器的Matlab设计
2.1 直接程序法
Matlab信号处理工具箱提供了firls函数和remez函数,它们的调用格式语法规则相同,只是优化算法不同,函数firls利用最小二乘法使期望的频率响应和实际的频率响应间的误差最小;函数remez实现Park-McClellan算法,这种算法利用remez交换算法和Che-byshev近似理论设计滤波器,使实际频率响应拟合期望频率响应达到最优。
函数调用格式为b=remez(n,f,m,‘h’)或b=firIs(n,f,m,‘h’),其中,n为滤波器的阶数;f为滤波器期望频率特性的频率向量标准化频率,取值0~1,是递增向量,允许定义重复频点;m为滤波器期望频率特性的幅值向量,向量m和f必须同长度且为偶数;b为函数返回的滤波器系数,长度为n+1,本文将采用remez函数法。
下面设计一个希尔伯特变换器,要求采样频率为2 000 Hz,通频带为50~950 Hz,滤波器阶数为60阶。实现程序如下:
设计的希尔伯特变换器的特性如图1,图2所示。
从仿真结果可以观察到增益在0 Hz和1 000 Hz处降为零,即为带通滤波器;同时具有严格的线性相位特性,符合设计要求。在设计中如果特性不满足要求,原有的参数必须作相应的调整,在程序中只需对参数进行重新设定,就可以得到所需要的希尔伯特变换器。
2.2 利用FDATool工具设计法
FDATool是Matlab信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计不同的滤波器,同时可以实现滤波器的最小阶数设计。在Matlab命令窗口输入FDATool后回车就会弹出FDATool界面。
根据2.1中的设计实例,首先在Filter Type栏中选择Hilbert Transformer,在Design Method栏中选择Equiripple法,在filter order中选择60,在Frequencyand Magnitude Specifications中设置F=[50 950];M=[1 1];Fs=2 000,最后点击Design Filter,通过菜单选项Analysis可以在特性显示区看到滤波器的各种特性,如图3~图5所示。
在幅频特性和相频特性满足要求的同时,由图3可知单位脉冲响应为奇对称,即h(n)=-h(N-n-1),也符合希尔伯特变换器的特性。若设计不满足要求,则可以直接在FDATool界面中改变参数,在设计满足要求后,还可以把希尔伯特变换器的系数导出为Matlab变量,文本文件或C语言头文件等,这为后续的设计提供方便。3 希尔伯特变换器的效果验证
3.1 直接程序验证法
对于所设计的希尔伯特变换器,频率为10 Hz的振动作为输入信号,采样频率为100 Hz,验证对应的数据点是否满足相位相差90°的特点,主要实现程序如下:
由图6可知,该希尔伯特变换器对阻带和通带波纹进行了控制,输出信号的相位比输入信号的相位前移了90°,符合希尔伯特变换的性质。如若把输入信号的频率变为-10Hz,则输出信号较之输入信号会后移90°,如图7所示。通过验证可知,该希尔伯特变换器实现了π/2移相。
3.2 Simulink仿真法
利用Matlab提供的Simulink工具对该希尔伯特变换器进行仿真,输入信号以3.1节中的要求为例,仿真系统如图8所示,在建立仿真系统时,注意对所选择的模块进行相应的参数设计。仿真结果如图9,图10所示。
4 结语
在Matlab平台上,采用直接程序法和FDATool工具法均可以快捷有效地完成希尔伯特变换器的设计,可以随时对比设计要求和希尔伯特变换器的特性,以使设计达到最优化。由于Matlab具有强大的接口功能,设计的结果可以很方便地移植到DSP,FPGA等器件中。在实际使用中,只需按要求修改参数,即可实现不同的希尔伯特变换器,实用性较强。