利用MATLAB基于FIR滤波器通过FRR方式进行对正弦函数的滤波
时间: 2023-12-22 16:04:55 浏览: 145
以下是MATLAB基于FIR滤波器通过FRR方式进行对正弦函数的滤波的示例代码:
```matlab
% 设计100阶低通FIR滤波器,截止频率为100Hz
fs = 1000; % 采样频率
fc = 100; % 截止频率
L = 100; % 滤波器阶数
h = fir1(L, fc/(fs/2), 'low');
% 生成频率为50Hz,振幅为1的正弦信号
t = 0:1/fs:1;
x = sin(2*pi*50*t);
% 对正弦信号进行滤波
y = filter(h, 1, x);
w = 30; % 设置FRR方法的窗口大小
b = ones(w, 1)/w; % 设置FRR方法的滤波器系数
y_frr = filter(b, 1, y);
% 绘制原始信号、滤波后的信号和平滑滤波后的信号的时域波形
subplot(3, 1, 1);
plot(t, x);
title('Original Signal');
subplot(3, 1, 2);
plot(t, y);
title('Filtered Signal');
subplot(3, 1, 3);
plot(t, y_frr);
title('Smoothed Signal');
```
在这个示例中,我们先使用MATLAB中的`fir1`函数设计了一个100阶低通FIR滤波器,截止频率为100Hz。然后,我们生成了一个频率为50Hz,振幅为1的正弦信号,并将其输入到FIR滤波器中进行滤波。接着,我们使用FRR方法对滤波后的信号进行平滑滤波,得到平滑后的信号。最后,我们绘制了原始信号、滤波后的信号和平滑滤波后的信号的时域波形,以便观察滤波效果。
阅读全文