常用的方法是经典模拟滤波器( the Butterworth ,切比雪夫I和II ,和椭圆滤波器),双线性变换。这种技术的优点之一是通式为这些过滤器的存在。该软件提供了两种类型的滤波器 --低通滤波器和高通滤波器, 4种设计方法 - 巴特沃斯,切比雪夫I型,切比雪夫II型,椭圆型和FFT和数据的图形显示的功能。为了满足用户的要求,,用户需要在用户界面中向过滤器输入一些参数,例如:采样频率,截止频率等等。软件的开发可以通过以下步骤来完成。
3.1. Matlab程序设计
Matlab程序设计将实现四个设计方法和数据的图形显示。 Matlab的信号处理工具箱提供了一些功能,能够快速,方便地设计滤波器。巴特沃斯滤波器是在动态分析中最常用的数字滤波器中的一个。巴特沃斯滤波器的频率响应在通带内是最平坦的(没有波纹),并朝零滚降在阻带。巴特沃斯滤波器的设计:使用函数buttord ( )来计算的顺序和截止频率巴特沃斯滤波器和使用功能butter()来实现巴特沃思模拟和数字滤波器的设计切比雪夫滤波器是具有陡峭的滚降多通带纹波( I型)或停止带内波动( II型)的模拟或数字滤波器。切比雪夫滤波器具有滤波器理想化特性与实际之间的误差很小的性质,但波纹停止在通带频带内。切比雪夫I型滤波器设计:使用函数cheb1ord ( )来计算切比雪夫I型过滤顺序和使用功能cheby1 ( )来实现切比雪夫I型滤波器的设计。切比雪夫II型滤波器设计:使用函数cheb2ord ( )来计算切比雪夫II型滤波器的顺序和使用功能cheby2 ( )来实现切比雪夫II型滤波器的设计。椭圆滤波器(也称为考尔滤波器)是滤波器与均衡纹波(等波纹)作用在通带和阻带中。波纹在每个频带是独立可调的,对于波纹的给定值(纹波是否相等),任何其它滤波器具有在通带和阻带之间的过渡速度增益。波纹在阻带趋近于零,过滤器变成一个切比雪夫型滤波器。波纹在通频带接近于零,滤波器变成切比雪夫II型滤波器,最后,因为这两个纹波值接近于零,过滤器变成一个巴特沃斯滤波器。
椭圆滤波器设计:使用函数ellipord()来计算最小参数为椭圆滤波器,并使用功能ellipord()来实现椭圆滤波器的设计。具有相同系数的四个不同种参数得到的过滤器如图1。
5
图1:四种不同类型的滤波器
FFT滤波器设计:使用FFT函数()和IFFT()来实现的离散傅里叶变换和反变换。
数据图形显示的程序如下:
function VPlot(fs,t,y,yp)
% y is the sample data?yp is the data after filtering fh=figure(1); set(gcf,'Visible','off'); %figure(1) is invisible plot(fs*t(1:50),y(1:50),'b','LineWidth',1);
% Plot the waveform of the sample data hold on; plot(fs*t(1:50),yp(1:50),'r','LineWidth',2); % Plot the waveform after filtering
legend(' the sample data ',' the data after filtering '); set(fh,'NumberTitle','off','Name',' the waveform '); ah=gca;
set(gca,'XLim',[1 50]);
xlabel('time (1/fs seconds)'); print -dmeta; % Hard copy of the graphics close(gcf); % Close the figure(1)
Matlab程序设计,我们可以用上面的混合编程方法来创建COM 组件,然后可以用VB转介。
3.2. VB程序设计
打开VB的工程/引用对话框中,然后就可以通过现有参考的列表中选择
Form_Load() module: Set iop = New filtercomclass. Input the sampling data:
Open InText.Text For Input As #1 Do While Not EOF(1) Input #1, y(i) i = i + 1
6
If (i > n) Then
MsgBox (\correct!\
Close #1
Exit Sub End If Loop Close #1
然后调用在cmdFilter_Click的接口函数()模块来过滤采样数据: Call iop.vcheb2(1, yp, Wp, Ws, Rp, Rs, ftype, y) and Call iop.vplot(fs, t, y, yp).
Get graphics from the clipboard: Figure.Picture = Clipboard.GetData().
Save the data after filtering:
Open \ For i = 1 To n
Write #1, yp(1, i) Next i Close #1 最后,编译并执行.
图 2. 用VB开发用户界面
4. 上述软件进行测试
最近,它是基于该共混物一种新的方法,GPS RTK技术高度信号和升沉信号,呈现在精确的多波束数据处理。混合 RTK高度信号和升沉信号必须分别使用滤波器来提取有效部分。在本节中,我们将使用预处理的RTK高度信号,以测试上述设计的滤波器。RTK高度信号的低频部分是有效的。因此,我们使用了低通巴特沃斯滤波器来处理信号。可根据实际需要,采样频率为1Hz和截止频率被设定为0.2Hz。
7
图3. RTK高度信号测试的结果
从该结果可以发现,该软件可以满足用户的需求,实现了信号和数据图形的分析。更重要的是,与M-Files比较,代码的效率大大提高,。
该软件的主要特点是,应用程序是完全脱离Matlab的工作环境,而且编程的难度降低,因为Matlab的数学库和工具箱中包含的各种功能,并且该算法的保密性可以得到保证,最为COM组件的形式。
致谢
这项研究由中国自然科学基金委员会(NSFC)赞助,授权号码40776048。
参考文献
[1]贝兹 - 洛佩兹,D.;贝兹-Yillegas,四,基于Matlab[C]的滤波器设计,在教育工作会议上,第三卷,第F4D前沿 - 12-6 2001年10月。
[2]岳玉芳; 尤忠生; 张玉芳, 基于COM[J]的计算机工程设计,卷用VB与Matlab混合编程。 26,第1号,第61-2,65,2005年1月。
[3]赵德安; 潘天虹, 基于VB和Matlab的谷物白粉病人工神经网络模式识别软件的鉴定[J],网络,传感与控制,2008。 ICNSC2008 IEEE国际会议ON6 - 2008
8
年4月8日第808 - 811。
[4]范新浩; 苗庆敏; 安刚, 基于Delphi6的研究[J],计算机应用与Softerware,第21卷,第11号,第38-9,40,2004年11月巴特沃斯数字滤波器的设计与应用。
[5]欧金成; 林德杰;彭蓓展, 调用Matlab从VB实现图形和界面研究[J],计算机工程与设计,卷联盟。 23日,第12号,第64-6,2002年12月。
[6]李腾飞; 张辉, LabWindows/ CVI和Matlab设计滤波器的研究[J],电子科学,与技术,第3期,2007年3月。
[7]杨凡林; 赵建虎; 张红梅; 韩晓东, RTK身高信号和冻胀信号的融合及精度分析[J],测绘与信息科学武汉大学学报,Vol。 32,第3期, 225-8页,2007年3月。
9