基于MATLAB,用频率采样法分别设计一个低通和一个高通滤波器,技术指标自定。在 过渡带加入1个或2个过渡点,调整过渡点的幅值大小,画出并比较其幅频特性波形、单 位响应波形。通过反复尝试,使得滤波器阻带衰减达到最低,此时过渡点的幅度值是多 少?
时间: 2024-11-30 13:19:32 浏览: 3
在MATLAB中,设计低通和高通滤波器通常使用`fir1`或`firpm`函数来创建有限冲激响应(FIR)滤波器,而`freqs`函数用于绘制幅频特性和相频特性。频率采样法(Frequency Sampling Method, FSM)则是利用已知的理想滤波器频率响应来确定FIR滤波器系数。
下面是一个基本步骤示例:
1. 设定滤波器参数:
- **低通滤波器**:决定截止频率(如0.5 * Nyquist Frequency),选择阶数(如100),可能设定过渡带宽度和衰减(如-3dB或更小)。
- **高通滤波器**:同样设定截止频率(如Nyquist Frequency / 2),过渡带和衰减。
2. 使用`fir1`或`firpm`设计滤波器:
```matlab
% 设计低通滤波器
lowPassFilter = fir1(order, cutoffFrequency, 'low');
% 设计高通滤波器
highPassFilter = fir1(order, cutoffFrequency, 'high');
```
3. 调整过渡点:
- 如果有1个过渡点,可以手动调整FIR滤波器的特定系数以改变过渡区。
- 如果有2个过渡点,可能需要使用`firls`或自定义算法调整滤波器的多个点。
4. 绘制特性:
```matlab
% 幅频特性
[b, a] = freqz(lowPassFilter, highPassFilter);
plot(bw, abs(b), 'LineWidth', 2); % bw是频率轴,abs(b)是幅值
legend('Low Pass', 'High Pass');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
% 单位响应
impulse([lowPassFilter, highPassFilter]);
grid on;
```
5. 检查阻带衰减:
使用`db`函数测量阻带内的衰减:
```matlab
dbGain = db(abs(highPassFilter));
% 查找阻带内第一个低于预设衰减的点的位置
minDecayIndex = find(dbGain < desiredAttenuation, 1);
```
6. 调整过渡点幅度值:
可以尝试修改特定的滤波器系数(通常是靠近过渡带的那些),直到阻带衰减满足要求。具体幅度值取决于所选的系数位置和数值。
阅读全文