[H,w]=freqz(num,den,N);
时间: 2024-03-16 20:43:22 浏览: 62
数字信号处理实验一.pdf
这段 MATLAB 代码计算了一个数字滤波器的频率响应,并返回了该数字滤波器的幅度响应和相位响应。具体来说,其中:
- `num` 是数字滤波器的分子系数;
- `den` 是数字滤波器的分母系数;
- `N` 是计算频率响应的点数;
- `H` 是数字滤波器的频率响应,是一个长度为 `N` 的复数向量,其中每个元素表示滤波器在相应的频率处的复数增益;
- `w` 是频率向量,是一个长度为 `N` 的向量,其中每个元素表示相应的频率值。
例如,如果想要计算一个二阶数字滤波器的幅度响应和相位响应,并在频率范围内绘制出来,可以使用以下代码:
```
num = [1 -2*cos(w0) 1];
den = [1 -1.8*cos(w0) 0.81];
N = 1024;
[H,w] = freqz(num,den,N);
figure;
subplot(2,1,1);
plot(w,20*log10(abs(H)));
xlabel('Frequency (rad/sample)');
ylabel('Magnitude (dB)');
title('Magnitude Response');
subplot(2,1,2);
plot(w,angle(H));
xlabel('Frequency (rad/sample)');
ylabel('Phase (rad)');
title('Phase Response');
```
其中,`w0` 是数字滤波器的截止频率,`subplot` 函数用于在同一张图中绘制两个子图,第一个子图绘制幅度响应,第二个子图绘制相位响应。执行上述代码后,会生成一个包含幅度响应和相位响应的频率响应图。
阅读全文