matlab:<二>firls函数

1、 简介

  firls:最小二乘线性相位 FIR 滤波器设计。firls 设计了一个线性相位 FIR 滤波器,该滤波器可以最大限度地减少理想分段线性函数与滤波器在一组所需频带上的幅度响应之间的加权积分平方误差。

2、用法

b = firls(n,f,a)

含义:
n: 滤波器的阶数
f: 是频率点对的向量,指定在 0 和 1 之间的范围内(归一化之后的频率,可以设置为实际频率/采样频率),其中 1 对应于奈奎斯特频率。 频率必须按递增顺序排列。 允许重复频率点,事实上,可用于设计与具有矩形 (rectwin) 窗口的 fir1 和 fir2 函数返回的滤波器完全相同的滤波器。
a: a 是一个向量,包含在 f 中指定的点处的所需幅度。其中a的长度和f的长度需要相等

3、示例

设计一个 255 阶 FIR 低通滤波器,其过渡带介于 0.25π 和 0.3π 之间。 使用 fvtool 显示滤波器的幅度和相位响应。

b = firls(255,[0 0.25 0.3 1],[1 1 0 0]);
fvtool(b,1,'OverlayedAnalysis','phase')

图形如下所示(其中蓝色为幅频特性曲线,黄色为相频特性曲线):
在这里插入图片描述
从图中看看出,归一化频率0处的幅值为1, 0.25处近似等于1,0.3和1处的为0,这也与我们的设计相符合。如果需要将幅度谱以db的形式观察,则选中标签,右键选择即可。

在这里插入图片描述
如果要设置直接显示频率或者修改采样率,直接在图像空白处右击,选择analysis parameters或者sampling frequency进行设置即可。
在这里插入图片描述

对应幅频特性和相频特性曲线的画法也可调用freqz函数,具体代码如下:

b = firls(255,[0 0.25 0.3 1],[1 1 0 0]);
fvtool(b,1,'OverlayedAnalysis','phase')
figure;
subplot(1,2,1)
[H,w] = freqz(b,1);    %默认画0到辟pi的频谱
plot(w/pi,abs(H))
title('幅频特性曲线')
xlabel("频率(*\pi/sample)")
subplot(1,2,2)
plot(w/pi,angle(H));
title('相频特性曲线')

图如下所示:
在这里插入图片描述
从图中可以看出freqz幅频特性曲线和fvtool一样,但不知道为什么相频特性曲线却不一致。
但是代码如果改为

freqz(b,1)

则freqz的幅频特性和相频特性与fvtool完全一致。

特别说明:
matlab信号处理工具规定单位频率为奈圭斯特频率(采样频率的一半),所以基本的滤波器设计函数的截止频率参数均以奈圭斯特频率为基准做归一化。例如,对于一个采样频率为500Hz的系统,300Hz则对应300/500=0.6。若要将归一化频率转换为单位圆上的弧度,则将归一化值乘以2π(pi)即可。
所以:这个fvtool()求得的幅频特性的横坐标是归一化的。若要求Hz为单位的截止频率,只需乘以fs/2即可。
当然也可以用 freqz()或者freqs()求取横坐标以Hz为单位的幅频特性。
而且调用fvtool()是不需要知道采样频率的,而freqz()或者freqs()是有fs采样频率这个参数的。
w为数字频率,换算成实际频率为f=(w/2pi)fs
以采样率为100hz,信号频率为10hz为例,归一化后的叫频率为2pi
10/100=0.2pi rad/sample
反之如果归一化后的叫频率为0.2pi,采样率为100hz,则频率为0.2pi/2/pi*100=10hz

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值