f .有丰富的网络资源,从相关的Web网站可以直接获得全套的MATLAB联机帮助文件和说明书的电子文档,还可以获得各类技术支持与帮助。
g. 有丰富的工具箱〔toolbox〕。各个领域的专家学者将众多学科领域中常用的算法编写为一个个子程序,即m文件,这些m文件包含在一个个工具箱中。其工具箱可以分为两大类,即功能性工具箱和科学性工具箱。功能性工具箱主要用来扩充MATLAB的符号计算、图形可视化、建模仿真、文字处理等功能以及与硬件实时交互的功能。学科性工具箱是按学科领域来分类的,如信号处理、控制、通信、神经网络图像处理、系统辨识、鲁棒控制、模糊逻辑、小波等工具箱。
MATLAB中的信号处理工具箱内容丰富,使用简便。在数字信号处理中常用的算法,如FFT,卷积,相关,滤波器设计,参数模型等,几乎都只用一条语句即可调用。数字信号处理常用的函数有波形的产生、滤波器的分析和设计、傅里叶变换、Z变换等,如:
波形产生:
sawtooth(锯齿波或三角波) Diric(Dirichlet或周期sinc函数) rand(白噪声信号波形) square(方波) sinc(sinc或 函数) chirp(chirp信号波形)
滤波器的分析: abs(求幅值) angle(求相角) conv(求卷积)
freqz(数字滤波器频率响应) impz(数字滤波器的冲击响应) zplane(数字系统零极点图)
IIR滤波器设计:
butter(巴特沃思数字滤波器) cheby1(切比雪夫I型) cheby2(切比雪夫II型)
14
maxflat(最平滤波器) ellip(椭圆滤波器) yulewalk(递归数字滤波器) bilinear(双线性变换) impinvar(冲激响应不变法)
FIR滤波器设计: triang(三角窗) blackman(布莱克曼窗) boxcar(矩形窗) hamming(海明窗) hanning(汉宁窗) kaiser(凯塞窗) fir1(基于窗函数法) fir2(基于频率抽样法)
firrcos(上升余弦FIR滤波器设计法) intfilt(内插FIR滤波器设计法)
kaiserord(用Kaiser窗设计FIR滤波器的参数估计)
各种变换:
czt(线性调频Z变换) dct(离散余弦变换) fft(一维快速傅里叶变换) fft2(二维快速傅里叶变换) idct(逆离散余弦变换) ifft(一维逆快速傅里叶变换) ifft2(二维逆快速傅里叶变换) hilbert(Hilbert变换)
可以看出MATLAB是一个功能十分强大的系统,是集数值计算、图形管理、程序开发为一体的环境。除此之外,MATLAB还具有很强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。用户可以根据自己的工作任务,开发自
15
己的工具箱。在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。 在设计研究单和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。 4 方案设计
4.1巴特沃斯IIR滤波器的设计
在MATLAB下,设计巴特沃斯IIR滤波器可使用butter函数。
Butter函数可设计低通、高通、带通和带阻的数字和模拟IIR滤波器,其特性为使通带内的幅度响应最大限度地平坦,但同时损失截止频率处的下降斜度。在期望通带平滑的情况下,可使用butter函数。butter函数的用法为:[b,a]=butter(n,Wn,/ftype/)其中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。buttord函数的用法为:[n,Wn]= buttord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。
不同类型(高通、低通、带通和带阻)滤波器对应的Wp和Ws值遵循以下规则: a.高通滤波器:Wp和Ws为一元矢量且Wp>Ws; b.低通滤波器:Wp和Ws为一元矢量且Wp c.带通滤波器:Wp和Ws为二元矢量且Wp 在期望通带下降斜率大的场合,应使用椭圆滤波器或契比雪夫滤波器。在MATLAB下可使用cheby1函数设计出契比雪夫I型IIR滤波器。 cheby1函数可设计低通、高通、带通和带阻契比雪夫I型滤IIR波器,其通带内为等波纹,阻带内为单调。契比雪夫I型的下降斜度比II型大,但其代价是通带内波纹较大。cheby1函数的用法为:[b,a]=cheby1(n,Rp,Wn,/ftype/)在使用cheby1函数设计IIR滤波器之前,可使用cheblord函数求出滤波器阶数n和截止频率Wn。cheblord函数可在给定滤波器性能的情况下,选择契比雪夫I型滤波器的最小阶和截止频率Wn。cheblord函数的用法为:[n,Wn]=cheblord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截 16 止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。 4.3数字滤波器的设计 4.3.1 数字滤波器及传统设计方法 数字滤波器(digital filter)是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。 数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。 IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。FIR数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。 在对滤波器实际设计时,整个过程的运算量是很大的。例如利用窗函数法设计M阶FIR低通滤波器时,首先要根据(1)式计算出理想低通滤波器的单位冲激响应序列后根据(2)式计算出M个滤波器系数 ,然 。当滤波器阶数比较高时,计算量比较大,设 计过程中改变参数或滤波器类型时都要重新计算。 (1) 1w2hd(n)???wH(w)ejnwdw w2(2)h(n)?hd(n)w(n) 设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。 17 FIR数字滤波器的窗函数设计法 设理想带阻滤波器频率响应为 ?1?H(ejw)??0?1?0???2?/52?/5???3?/5 (2) 3?/5????利用Kaiser窗函数,设计长度为55的阻带滤波器,使阻带衰减为60dB。参数β可由式(3)确定α β=0.1102(α-8.7) (3) 其中α=60。 MATLAB程序如下: n=55-1; w=[0.4,0.6]; beta=0.1102*(60-8.7); kaiw=Kaiser(n+1,beta); b=fir1(n,w,’stop’,kaiw); [h,w]=freqz(b,1,512,2); plot(w,20*log10(abs(h)));grid; xlabel(‘频率(归一化)’); ylabel((‘幅度dB’)); 带阻滤波器幅频特性实现如图1所示。 图1带阻滤波器幅频特性 18