matlab 实现fir
时间: 2023-12-03 16:40:45 浏览: 35
以下是使用MATLAB实现FIR滤波器的步骤:
1. 确定滤波器的设计要求,例如截止频率、通带和阻带的最大衰减等。
2. 选择合适的窗函数,例如矩形窗、汉宁窗、汉明窗等。
3. 使用MATLAB中的fir1函数设计FIR滤波器,该函数的语法如下:
```matlab
b = fir1(n, Wn, window)
```
其中,n是滤波器的阶数,Wn是归一化的截止频率,window是所选的窗函数。
4. 使用filter函数将FIR滤波器应用于信号,该函数的语法如下:
```matlab
y = filter(b, 1, x)
```
其中,b是FIR滤波器的系数,x是输入信号,y是输出信号。
下面是一个使用MATLAB实现FIR滤波器的示例代码:
```matlab
% 设计FIR滤波器
fs = 1000; % 采样率
f1 = 50; % 通带截止频率
f2 = 150; % 阻带截止频率
Rp = 1; % 通带最大衰减
Rs = 60; % 阻带最小衰减
Wp = f1 / (fs/2); % 归一化通带截止频率
Ws = f2 / (fs/2); % 归一化阻带截止频率
[n, Wn] = buttord(Wp, Ws, Rp, Rs); % 计算巴特沃斯滤波器的阶数和截止频率
window = hamming(n+1); % 选择汉明窗
b = fir1(n, Wn, window); % 设计FIR滤波器
% 应用FIR滤波器
t = 0:1/fs:1; % 时间向量
x = sin(2*pi*100*t) + sin(2*pi*200*t); % 输入信号
y = filter(b, 1, x); % 应用FIR滤波器
% 绘制结果
figure;
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间(秒)');
ylabel('幅值');
subplot(2,1,2);
plot(t, y);
title('滤波后信号');
xlabel('时间(秒)');
ylabel('幅值');
```