matlab的fir1滤波器怎么画图
时间: 2024-09-10 14:01:30 浏览: 37
`fir1` 函数是 MATLAB 中用于设计 FIR 滤波器的一个函数。使用 `fir1` 函数设计滤波器后,您可以使用 `freqz` 函数来画出其频率响应图。以下是一个基本的示例,展示了如何使用 `fir1` 设计一个低通滤波器,并使用 `freqz` 来画出其幅度和相位响应图。
```matlab
% 设计一个低通滤波器,截止频率为0.4(归一化),滤波器阶数为10
N = 10; % 滤波器阶数
Wn = 0.4; % 归一化截止频率
b = fir1(N, Wn); % 使用fir1函数设计滤波器
% 画出滤波器的频率响应
freqz(b, 1, 1024); % 生成1024个频率点来绘制更平滑的曲线
```
在这段代码中,`fir1(N, Wn)` 函数调用创建了一个阶数为 N 的低通滤波器,其截止频率为 Wn(归一化到 Nyquist 频率的一半)。`freqz` 函数则用于计算和绘制滤波器的频率响应,其中第一个参数是滤波器的系数(`b`),第二个参数是分母系数(这里为1,因为是FIR滤波器),而1024则是要评估的频率点数。
请注意,`freqz` 默认生成的是归一化的频率轴,即从0到π(对应于奈奎斯特频率)。如果您想得到实际的频率(例如,从0到采样频率的一半),您需要提供采样频率参数。
例如:
```matlab
% 采样频率为1000Hz,绘制实际频率响应
fs = 1000; % 采样频率
[H, f] = freqz(b, 1, 1024, fs); % 返回频率响应的幅值H和频率向量f
plot(f, 20*log10(abs(H))); % 画出幅度响应(以分贝为单位)
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
```