您好,欢迎来到汇意旅游网。
搜索
您的当前位置:首页基于Matlab的FIR型希尔伯特变换器设计

基于Matlab的FIR型希尔伯特变换器设计

来源:汇意旅游网
基于Matlab的FIR型希尔伯特变换器设计

聂仙娥;许爱国;赵河明;杨超

【摘 要】As an important transformation, Hilbert transform has been widely used in the communication system. In order to achieve the digital demodulation, the converter signals should be decomposed by the help of Hilbert transformer. The method of using Matlab to design Hilbert transformer is introduced, and it is one of the most efficient and effective methods.Through specific design , simulation, and comparison between the delay signals output by Hilbert Transformer and the original signal, it demonstrates that Matlab is a powerful tool in designing filter.%在通信系统中,希尔伯特变换是被广泛应用的重要变换.为了实现数字解调,通常需要借助希尔伯特变换器时信号进行分解,利用Matlab设计希尔伯特变换器是一种最为快捷、有效的方法.通过具体的设计、仿真及对原始信号和经过希尔伯特变换器输出延迟信号的比较,说明Matlab是一个在滤波器设计方面很有力的工具. 【期刊名称】《现代电子技术》 【年(卷),期】2011(034)007 【总页数】4页(P113-116)

【关键词】Matlab;Hilbert变换器;remez;FDATool工具 【作 者】聂仙娥;许爱国;赵河明;杨超

【作者单位】中北大学机电工程学院,山西太原030051;军械工程学院军械技术研究所,河北石家庄050000;中北大学机电工程学院,山西太原030051;山西北方惠丰机电有限公司,山西长治046012;中北大学机电工程学院,山西太原030051 【正文语种】中 文 【中图分类】TN624-34 0 引 言

通信系统中,经常需要对一个信号进行正交分解,即分解为同相分量和正交分量。由于希尔伯特变换可以提供90°的相位变化而不影响频谱分量的幅度,即对信号进行希尔伯特变换就相当于对该信号进行正交移相,使它成为自身的正交对[1]。因此,希尔伯特变换在通信领域获得了广泛应用。

在传统的设计中,希尔伯特变换器可由一个FIR 滤波器和一个时延模块实现,也可由一组滤波器对实现,而实现FIR型希尔伯特变换器的一个简单方法就是对原型低通滤波器作正弦/ 余弦变换[2]。但是,无论哪种方法都需要通过计算对低通滤波器的系数进行转换,其计算繁琐且存在一定的误差。Matlab作为滤波器设计的基础软件,不仅可以快速有效地实现希尔伯特变换器的设计、分析仿真和最优化,而且可以直接计算出希尔伯特变换器的系数,加之Matlab具有强大的接口功能,为后续的设计提供了方便。 1 希尔伯特变换器的基本原理

连续时间信号x(t)的希尔伯特变换定义为[3]: =x(t)⊗ (1)

由式(1)可得单位冲击响应h(t)=1/(πt),由于jh(t)=j/(πt)的傅里叶变换是符号函数sgn(ω),所以希尔伯特变换器的频率特性为: (2)

记H(jω)=|H(jω)|ejφ(ω),当|H(jω)|=1时: (3)

信号x(t)的希尔伯特变换可以看成是信号x(t)通过一个幅度为1的全通滤波器输出,信号通过希尔伯特变换器后,其负频率成分作+90°的相移,而正频率成分作-90°的相移。

这类滤波器要求滤波器的零频响应为0,若滤波器阶数为偶数,则还要求Nyquist频率(归一化频率为1)处的响应为0。即如果滤波器的阶数为偶数,那么增益在频率为0 Hz和fs/2处必须降为零,希尔伯特滤波器必须是一个带通滤波器。如果滤波器的阶数为奇数,那么增益在频率为0 Hz处必须降为零,希尔伯特滤波器必须是一个高通滤波器[4]。

2 希尔伯特变换器的Matlab设计 2.1 直接程序法

Matlab信号处理工具箱提供了firls函数和remez函数,它们的调用格式语法规则相同,只是优化算法不同,函数firls利用最小二乘法使期望的频率响应和实际的频率响应间的误差最小;函数remez实现Park-McClellan算法,这种算法利用remez交换算法和Chebyshev近似理论设计滤波器,使实际频率响应拟合期望频率响应达到最优[5]。

函数调用格式为b=remez(n,f,m,′h′)或b=firls(n,f,m,′h′)[6],其中,n为滤波器的阶数;f为滤波器期望频率特性的频率向量标准化频率,取值0~1,是递增向量,

允许定义重复频点;m为滤波器期望频率特性的幅值向量,向量m和f必须同长度且为偶数;b为函数返回的滤波器系数,长度为n+1,本文将采用remez函数法。

下面设计一个希尔伯特变换器,要求采样频率为2 000 Hz,通频带为50~950 Hz,滤波器阶数为60阶。实现程序如下: clf;n=60;

f=[0.05 0.95];m=[1 1]; % 理想滤波器的幅频特性 fs=2000; % 采样频率 b=remez(n,f,m,′h′);

% 采用remez设计Hilbert变换器 [h,w]=freqz(b,1,512,fs);

% 计算Hilbert变换器的脉冲响应 figure(1);

plot(w,20*log10(abs(h)));grid; %计算幅频特性 axis([0 1000 -40 10]); %绘制正半轴频谱 xlabel(′频率/Hz′); ylabel(′幅值/dB′);

title(′Hilbert变换器的幅频特性′); figure(2);

plot(w,angle(h)/pi*180);

% 计算相频特性 grid;

xlabel(′频率/Hz′); ylabel(′相角/′);

title(′Hilbert变换器的相频特性′)

设计的希尔伯特变换器的特性如图1,图2所示。

从仿真结果可以观察到增益在0 Hz和1 000 Hz处降为零,即为带通滤波器;同时具有严格的线性相位特性,符合设计要求。在设计中如果特性不满足要求,原有的参数必须作相应的调整,在程序中只需对参数进行重新设定,就可以得到所需要的希尔伯特变换器。

图1 Hilbert变换器的幅频特性 图2 Hilbert变换器的相频特性 2.2 利用FDATool工具设计法

FDATool是Matlab信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计不同的滤波器,同时可以实现滤波器的最小阶数设计[7]。在Matlab命令窗口输入FDATool后回车就会弹出FDATool界面。 根据2.1中的设计实例,首先在Filter Type栏中选择Hilbert Transformer,在Design Method栏中选择Equiripple法,在filter order中选择60,在Frequency and 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语言头文件等[8],这为后续的设计提供方便。

图3 Hilbert变换器的单位脉冲响应 图4 Hilbert变换器的幅度响应 图5 Hilbert变换器的相位响应 3 希尔伯特变换器的效果验证 3.1 直接程序验证法

对于所设计的希尔伯特变换器,频率为10 Hz的振动作为输入信号,采样频率为100 Hz,验证对应的数据点是否满足相位相差90°的特点,主要实现程序如下: clf;n=60;

f=[0 0.05 0.95 1];a=[0 1 1 0]; % 理想滤波器的幅频特性 b=remez(n,f,a,′h′);

% 采用remez 设计Hilbert变换器 [h,w]=freqz(b,1,512); % 计算滤波器的脉冲响应 t=0:1/100:3;x=sin(2*pi*10*t); % 时间序列和输入信号 figure(1)

subplot(2,1,1),plot(t(1:100),x(1:100)) title(′输入信号′) y=filter(b,1,x);

% 运用remez设计的Hilbert变换器进行滤波 subplot(2,1,2),

plot(t([1:100]+20/2),y([1:100]+20/2),′r-′)

% 绘制与输入信号对应的输出信号,考虑了延迟效应[9] xlabel(′时间/s′) title(′输出信号′)

由图6可知,该希尔伯特变换器对阻带和通带波纹进行了控制,输出信号的相位比输入信号的相位前移了90°,符合希尔伯特变换的性质。如若把输入信号的频率变为-10 Hz,则输出信号较之输入信号会后移90°,如图7所示。通过验证可知,该希尔伯特变换器实现了π/2移相。 图6 10 Hz输入信号的相移(一) 图7 -10 Hz输入信号的相移(一) 3.2 Simulink仿真法

利用Matlab提供的Simulink工具对该希尔伯特变换器进行仿真,输入信号以3.1节中的要求为例,仿真系统如图8所示,在建立仿真系统时,注意对所选择的模块进行相应的参数设计。仿真结果如图9,图10所示。 图8 Simulink仿真系统 图9 10 Hz输入信号的相移(二) 图10 -10 Hz输入信号的相移(二) 4 结 语

在Matlab平台上,采用直接程序法和FDATool工具法均可以快捷有效地完成希尔伯特变换器的设计,可以随时对比设计要求和希尔伯特变换器的特性,以使设计达到最优化。由于Matlab具有强大的接口功能,设计的结果可以很方便地移植到DSP,FPGA等器件中[10]。在实际使用中,只需按要求修改参数,即可实现不同的希尔伯特变换器,实用性较强。 参 考 文 献

[1] 汪璇,曹万强.Hilbert变换及其基本性质分析[J].湖北大学学报:自然科学版,2008,30(1):53-55.

[2] 张兵,汤清华,吴,等.基于DSP的数字正交解调器的设计与实现[J].微电子学与计算机,2009,26(7):32-35.

[3] 王薇,王晓茹,黄晓青,等.无功功率测量的Hilbert数字滤波器研究[J].电测与仪表,2007,44(3):9-12.

[4] 陈啸晴.基于Hilbert数字滤波的无功功率表设计研究[D].长沙:中南大学,2009.

[5] 刘波,文忠,曾涯.Matlab信号处理[M].北京:电子工业出版社,2006. [6] 张照明,刘郑波,刘斌.应用Matlab实现信号分析和处理[M].北京:科学出版社,2006.

[7] 飞思科技产品研发中心.Matlab 7基础与提高[M].北京:电子工业出版社,2007.

[8] 任淑萍,王欣峰.基于Matlab的数字滤波器设计与仿真[J].机械管理开发,2009,24(3):181-183.

[9] 万永革.数字信号处理的Matlab实现[M].北京:科学出版社,2007.

[10] 何宾.FPGA数字信号处理实现原理及方法[M].北京:清华大学出版社,2010.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务