matlab切比雪夫滤波器实现
时间: 2023-09-26 16:11:13 浏览: 92
以下是MATLAB代码实现切比雪夫滤波器:
```matlab
% 设计切比雪夫滤波器
fs = 1000; % 采样频率
fc = 100; % 截止频率
Rp = 1; % 通带最大衰减
Rs = 40; % 阻带最小衰减
Wp = fc/(fs/2); % 归一化通带截止频率
Ws = Wp*1.5; % 归一化阻带截止频率
[n, Wn] = cheb1ord(Wp, Ws, Rp, Rs); % 计算滤波器阶数和归一化截止频率
[b, a] = cheby1(n, Rp, Wn); % 计算滤波器系数
% 频率响应
[h, f] = freqz(b, a, 1024, fs);
mag = abs(h);
phase = unwrap(angle(h))*180/pi;
% 绘制幅度和相位响应曲线
subplot(2,1,1);
plot(f, mag);
title('Frequency Response (Chebyshev I)');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
ylim([-50 5]);
subplot(2,1,2);
plot(f, phase);
title('Phase Response (Chebyshev I)');
xlabel('Frequency (Hz)');
ylabel('Phase (degrees)');
ylim([-180 180]);
```
代码中使用`cheb1ord`函数计算滤波器的阶数和归一化截止频率,然后使用`cheby1`函数计算滤波器系数。最后使用`freqz`函数计算滤波器的频率响应,并绘制幅度和相位响应曲线。
阅读全文