matlab 低通滤波
时间: 2023-10-08 19:13:40 浏览: 37
在 MATLAB 中进行低通滤波可以使用 `filter` 函数或 `fir1` 函数。
下面是使用 `fir1` 函数设计并应用一个低通滤波器的示例代码:
```matlab
% 采样频率为 1000 Hz,截止频率为 100 Hz
fs = 1000;
fc = 100;
% 计算滤波器系数
order = 30; % 滤波器阶数
b = fir1(order, fc/(fs/2));
% 生成随机信号
t = 0:1/fs:1-1/fs;
x = sin(2*pi*50*t) + sin(2*pi*120*t) + randn(size(t));
% 低通滤波
y = filter(b, 1, x);
% 绘制原始信号和滤波后信号的频谱图
figure;
subplot(2,1,1);
plot(abs(fft(x)));
title('原始信号频谱图');
subplot(2,1,2);
plot(abs(fft(y)));
title('滤波后信号频谱图');
```
在这个示例中,我们使用 `fir1` 函数设计一个30阶的低通滤波器,其截止频率为100 Hz,采样频率为1000 Hz。然后,我们生成了一个随机信号,并使用 `filter` 函数将其低通滤波,最后绘制了原始信号和滤波后信号的频谱图。
你也可以使用 `filter` 函数来进行低通滤波,示例代码如下:
```matlab
% 采样频率为 1000 Hz,截止频率为 100 Hz
fs = 1000;
fc = 100;
% 计算滤波器系数
order = 30; % 滤波器阶数
b = fir1(order, fc/(fs/2));
% 生成随机信号
t = 0:1/fs:1-1/fs;
x = sin(2*pi*50*t) + sin(2*pi*120*t) + randn(size(t));
% 低通滤波
y = filter(b, 1, x);
% 绘制原始信号和滤波后信号的频谱图
figure;
subplot(2,1,1);
plot(abs(fft(x)));
title('原始信号频谱图');
subplot(2,1,2);
plot(abs(fft(y)));
title('滤波后信号频谱图');
```
在这个示例中,我们使用 `fir1` 函数设计一个30阶的低通滤波器,其截止频率为100 Hz,采样频率为1000 Hz。然后,我们生成了一个随机信号,并使用 `filter` 函数将其低通滤波,最后绘制了原始信号和滤波后信号的频谱图。