Rp=1; Rs=60;
[N,Wn]=cheb1ord(wp,ws,Rp,Rs,’s’) %估计滤波器的最小阶数N [b,a]=cheby1(N,Rp,Wn,’high’,’s’); %利用cheby1函数设计滤波器 %outpit Am response
w=linspace(1,4000,1000)*2*pi; H=freqs(b,a,w);
plot(w/(2*pi),20*log10(abs(H))); xlabel(‘Frequency(Hz)’); ylabel(‘Magnitude(dB)’);
title([‘Chebyshev I Analog bandpass filter order N=’,num2str(N)]) ; grid on; 运行结果如下: N = 11 Wn = 1.2566e+004 其幅频特性如下图所示
46
⑵ cheby2函数
其调用格式为: [b,a]=cheby2(n,Rp,Wn) [b,a]=cheby2(n,Rp,Wn,’ftype’) [b,a]=cheby2(n,Rp,Wn,’s’) [b,a]=cheby2(n,Rp,Wn, ’ftype’, ’s’) [z,p,k]= cheby2(…) [A,B,C,D]= cheby2(…)
利用该函数能设计契比雪夫II型低通、高通、带通和带阻模拟或数字滤波器。 函数引用中Rs为阻带最低衰减系数,其余参数与butter函数参数意义相同。
9.3 用ellip函数设计椭圆滤波器
其调用格式为: [b,a]=ellip(n,Rp,Rs,Wn) [b,a]=ellip(n,Rp,Rs,Wn,’ftype’) [b,a]=ellip(n,Rp,Rs,Wn,’s’) [b,a]=ellip(n,Rp,Rs,Wn, ’ftype’, ’s’) [z,p,k]= ellip(…) [A,B,C,D]= ellip(…)
利用该函数能设计椭圆低通、高通、带通和带阻模拟或数字滤波器。椭圆滤波器在通带内和阻带内均为等波纹,比巴特沃思和切比雪夫滤波器有更陡的下降特性,但会损失通带和阻带内的波纹系数,在相同的性能指标下椭圆滤波器所需阶数最小。
Rp为通带波纹系数(dB),Rs为阻带衰减系数(dB),其他参数同butter函数。 例 设计椭圆带阻模拟滤波器,其设计指标为:阻带频率为1000~2000Hz,两侧过渡带为500Hz,通带波纹系数Rp=1dB,阻带衰减系数Rs=60dB。(程序complex4_28) 以下程序代码可实现该滤波器。
%滤波器演示如下:
wp=[500 2500]*2*pi; %性能指标 ws=[1000 2000]*2*pi; Rp=1; Rs=60;
47
[N,Wn]=ellipord(wp,ws,Rp,Rs,’s’) %估计滤波器的最小阶数N [b,a]=ellip(N,Rp,Rs,Wn,’stop’,’s’); %利ellip函数设计滤波器 %outpit Am response
w=linspace(1,3000,1000)*2*pi; H=freqs(b,a,w);
plot(w/(2*pi),20*log10(abs(H))); xlabel(‘Frequency(Hz)’); ylabel(‘Magnitude(dB)’);
title([‘Ellip Analog highpass filter order N=’,num2str(N)]) ; grid on; 运行结果如下: N = 6 Wn = 1.0e+004 *
0.3142
1.5708
其幅频特性如下图所示
9.4 用besself函数设计贝塞尔模拟滤波器
其调用格式为: [b,a]=besself(n,Wn)
48
[b,a]= besself (n,Wn,’ftype’) [z,p,k]= besself (…) [A,B,C,D]= besself (…)
该函数仅用于设计贝塞尔低通、高通、带通和带阻模拟滤波器。滤波器在通带内有恒定的群时延特性,可以较好地保持通道内的信号波形,其参数同butter函数。
贝塞尔模拟滤波器与巴特沃思、切比雪夫和椭圆滤波器相比,过渡带下降幅度最慢,因此该函数设计滤波器时阶数一般较大。
例 设计5阶贝塞尔高通模拟滤波器,截止频率为1000rad/s,并绘制滤波器频率特性图(程序complex4_29)
以下程序代码可实现该滤波器设计。 %设计贝塞尔高通滤波器 n=5; Wn=1000;
[b,a]= besself (n,,Wn,’high’);
Freqs(b,a) % 画频率响应曲线 其幅频、相频特性如图所示:
49
附件一 基于MATLAB的实时数据采集与分析系统的实现
目前数据采集系统一般由数据采集卡构成,其价格与性能成正比,比较昂贵。而基于PC机的声卡技术已经成熟,成本也越来越低。一般的声卡都可以实现双通道、16位、高保真的数据采集,采样速率可以达到48kHz。对于许多科学实验和工程测量来说,其样本量化精度和采样率已足够,甚至优于目前常用数据采集卡的性能。如将其用于数据采集,不失为一种经济而又方便的选择。
MATLAB5.3及其以上版本中包含有数据采集工具箱,可以对声卡以及其他数据采集设备进行控制。这样将MATLAB与PC机的声卡相结合,就可以组成一个廉价而性能优越的数据采集系统,而利用MATLAB强大的数据处理功能,可以对采集到的数据更深入地进行各种分析。
1、系统组成
利用声卡在WINDOWS环境下开发数据采集系统时,由于受到编程语言的限制,其数据分析与处理的功能非常有限。例如,为了对所采集的数据进行功率谱分析,则需要用户以VB或C语言来编写功率谱分析的子程序,显然增加了开发的难度,并且也极不利于分析功能的进一步扩展。
而利用声卡作为A/D转换工具,经过衰减和取样电路得到的模拟信号送至声卡的线路输入端LINE IN,并利用MATLAB中提供的数据采集工具箱,可满足控制声卡进行数据采集的要求。用户通过调用MATLAB命令,可对采集的数据进行分析和处理,为用户带来极大的方便。基于以上考虑,系统组成如图1所示。
MATLAB软件环境信号源传感器信号调理声卡PC机信号采集与分析
图1 系统组成框图
整个系统可分为数据采集和数据分析2大部分,以友好的图形界面与用户进行交互沟通,数据采集部分实现数据采集功能,根据选择的采样速率和预设的采样时间,从声卡获得用户需要的数据;数据分析部分对采集到的数据进行频谱分析,全部数据的时域和频域波形以图形方式直观地呈现于用户面前。此外,还提供保存数据以及回放数据的功能。
2、具体实现步骤
⑴通过MATLAB编程实现MATLAB与声卡的连接。
MATLAB将声卡等设备都作为对象处理,其后的一切操作不与硬件直接相关,而是通过
50