在octave中设计滤波器,会提示软件包属于Octave Forge。
百度Octave Forge,进入。在Files->Octave Forge Packages,选择最新Individual Package Releases。里面有大量软件包。这里的部分软件包已经包含在ubuntu源中,其中的滤波器设计在octave-signal中,可以sudo apt-get install octave-signal安装,在ubuntu14.04中,signal版本是1.2.2,比这里要旧。可以下载signal-1.3.2.tar.gz,然后在octave中用命令pkg install 安装(一般安装到home),然后load,就可以用了。使用pkg install -auto 安装则自动load,更方便。如果 sudo octave 启动,则pkg安装到/usr/local/share/octave/packages中。
软件包中实际主要是众多的.m文件组成。例如fir1.m是用来设计滤波器的。从ubuntu源安装的话,位于/usr/share/octave/packages/signal-1.2.2中,浏览fir1.m可以看到用法说明及例子,或在octave中用help fir1查看使用说明。
1, FIR 滤波器设计
## usage: b = fir1(n, w [, type] [, window] [, noscale]) ......
## Examples:
## freqz(fir1(40,0.3));
## freqz(fir1(15,[0.2, 0.5], 'stop')); # note the zero-crossing at 0.1
## freqz(fir1(15,[0.2, 0.5], 'stop', 'noscale'));
可以直观看到滤波器响应。输入参数是归一化频率。
设计好后,使用Hn=fir1(40,0.3);得到滤波器系数。
firls可以用来设计最优化线性相位FIR滤波器,滤波器几乎可以是任意响应的。一个设计多带通滤波器的例子:
freqz(firls(100,[0 .1,.15 .25,.3 .4,.45 .55,.6 1],[0 0 1 1 0 0 1 1 0 0],[20 1 20 1 20]))
设计了两个通带的带通滤波器。
2, IIR 滤波器设计
IIR 滤波器包括了 巴特沃思、切比雪夫I, II、椭圆等等。
例如 设计切比雪夫II型低通滤波器
(1) 确定参数 [n,wc]=cheb2ord(0.0002,0.001,1,80)
n = 5
wc = 0.0010000
(2)设计滤波器 [b,a]=cheby2(5,80,0.001)
b =
7.8431e-07 -2.3529e-06 1.5686e-06 1.5686e-06 -2.3529e-06 7.8431e-07
a =
1.00000 -4.99721 9.98886 -9.98330 4.98887 -0.99722
(3)查看响应 freqz(b,a)。
这是一个通带很窄的低通滤波器,只有频带的万分之二。freqz缺省显示512频点,可以指定点数如freqz(b,a,32768),显示32768频点。然后放大看,幅度特性在低频有很大波动。