fir滤波器matlab代码
时间: 2023-11-25 21:49:29 浏览: 157
fir滤波器是一种数字滤波器,它的特点是具有线性相位和有限脉冲响应。在MATLAB中,可以使用fir1函数来设计fir滤波器,具体代码如下所示:
```matlab
% 设计一个长度为N的低通滤波器,截止频率为Wn
N = 50;
Wn = 0.5;
b = fir1(N, Wn);
% 对输入信号x进行滤波
y = filter(b, 1, x);
```
其中,N表示滤波器的长度,Wn表示滤波器的截止频率,b表示滤波器的系数,x表示输入信号,y表示滤波后的输出信号。使用fir1函数设计fir滤波器时,需要指定滤波器的类型(如低通、高通、带通、带阻等)和截止频率。
另外,如果需要对一个正弦信号进行滤波,可以使用filter函数和fir1函数结合的方式,具体代码如下所示:
```matlab
% 生成一个正弦信号
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间序列
f = 50; % 正弦信号频率
x = sin(2*pi*f*t);
% 设计一个长度为N的低通滤波器,截止频率为Wn
N = 50;
Wn = 0.2;
b = fir1(N, Wn);
% 对正弦信号进行滤波
y = filter(b, 1, x);
% 绘制滤波前后的信号波形和频谱图
subplot(2,2,1);
plot(t, x);
title('原始信号');
subplot(2,2,2);
plot(t, y);
title('滤波后信号');
subplot(2,2,3);
plot(abs(fft(x)));
title('原始信号频谱');
subplot(2,2,4);
plot(abs(fft(y)));
title('滤波后信号频谱');
```
阅读全文