fir滤波器原理是怎么样的,通过matlab脚本进行说明
时间: 2024-02-29 16:51:46 浏览: 68
FIR (Finite Impulse Response) 滤波器是一种数字滤波器,主要用于对离散信号进行滤波。它的原理是使用有限长度的冲激响应序列对输入信号进行卷积运算,以实现滤波的效果。FIR 滤波器具有线性相位和稳定性等优点,被广泛应用于数字信号处理领域。
下面是一个基于 MATLAB 的 FIR 滤波器实现的示例代码:
```matlab
% FIR滤波器参数设置
fs = 100e3; % 采样率
fc = 10e3; % 截止频率
N = 50; % 滤波器阶数
% FIR滤波器设计
h = fir1(N, fc/(fs/2));
% 生成随机信号
x = randn(1, 1024);
% 使用FIR滤波器进行滤波
y = filter(h, 1, x);
% 绘制原始信号和滤波后的信号
t = (0:length(x)-1)/fs;
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间(秒)');
ylabel('幅值');
subplot(2,1,2);
t = (0:length(y)-1)/fs;
plot(t, y);
title('滤波后信号');
xlabel('时间(秒)');
ylabel('幅值');
```
该 MATLAB 脚本中,首先设置了 FIR 滤波器的参数,包括采样率、截止频率、滤波器阶数等。然后使用 fir1 函数来设计 FIR 滤波器,生成一个滤波器系数向量 h。接下来,生成一个随机信号 x,使用 filter 函数进行滤波,使用 h 作为滤波器系数向量,得到滤波后的信号 y。最后,绘制原始信号和滤波后的信号的波形图。
在代码中,fir1 函数是用于设计一阶线性相位 FIR 滤波器的 MATLAB 函数,它的第一个参数是滤波器阶数,第二个参数是截止频率,单位为归一化频率,即截止频率除以采样率的一半。filter 函数是用于进行数字滤波的 MATLAB 函数,它的第一个参数是滤波器系数向量,第二个参数是分母系数向量,因为 FIR 滤波器的分母系数向量恒为1,所以使用了一个长度为1的向量[1]。
阅读全文