用窗函数法设计一个高通fir数字滤波器,设计指标为wp =0.6元,rp =0.25db,wst =0.4
时间: 2023-09-18 11:01:45 浏览: 94
高通滤波器的设计指标wp表示通带截止频率,rp表示通带最大衰减量,wst表示阻带截止频率。
1. 首先,根据设计指标,我们需要计算滤波器的阶数N。根据公式N = (4 / (π * Δf)),其中Δf = wp - wst,代入wp = 0.6和wst = 0.4,计算得N ≈ 13。
2. 接下来,根据N的值,我们选择合适的窗函数。常见的窗函数有矩形窗、汉明窗、汉宁窗等,根据设计要求选择窗函数。
3. 然后,根据窗函数的形式,我们得到滤波器的理想响应Hd(k)。对于高通滤波器,理想响应为Hd(k) = δ(k) - Hd_lp(k),其中Hd_lp(k)为低通滤波器的理想响应。
4. 接下来,根据窗函数法的思想,我们需要将理想响应Hd(k)通过窗函数进行加权得到滤波器的冲激响应h(k)。即h(k) = w(k) * Hd(k)。
5. 最后,对冲激响应h(k)进行归一化,使得滤波器的幅频响应在通带内满足指标rp的要求。具体的归一化方法可以根据具体窗函数的特点来选择。
通过以上步骤,我们可以设计一个满足指标wp = 0.6,rp = 0.25dB,wst = 0.4的高通FIR数字滤波器。具体的设计过程中,需要根据窗函数的选择和归一化方法来确定滤波器的冲激响应。
相关问题
根据如下技术指标,选择窗函数,用窗函数法设计FIR数字高通滤波器: wp=0.6π,Rp=1dB,7ws=0. 4π,Rs=50dB。 用MATLAB写出滤波器的阶数N,幅频特性曲线的代码。
根据提供的技术指标,选择窗函数,用窗函数法设计FIR数字高通滤波器的步骤如下:
1. 确定滤波器的过渡带宽和阻带衰减要求:
wp=0.6π,Rp=1dB,ws=0.4π,Rs=50dB。
2. 选择合适窗函数的类型并进行估计窗函数的宽度N:
根据经验,可以选择Kaiser窗函数,其参数beta可以通过下面的公式计算得到:
beta = 0.1102 * (Rs - 8.7)
delta_w = ws - wp
A = -20 * log10(Rp)
N = ceil((A - 8) / (2.285 * delta_w))
beta = 0.5842 * (pow(A, 0.4) - 1) + 0.07886 * A
其中,delta_w为过渡带宽,A为通带最大衰减,N为滤波器阶数,beta为Kaiser窗函数的参数。
3. 根据所求的理想滤波器求出单位脉冲响应hd(n):
根据高通滤波器的理想响应,可以得到其频率响应为:
H(e^jw) = 1 - H_l(e^jw)
其中,H_l(e^jw)为低通滤波器的理想响应,可以通过下面的公式计算得到:
H_l(e^jw) = (sin(wc*(N-n)))/(pi*(N-n))
其中,wc为截止频率,N为滤波器阶数,n为滤波器的系数。
将H(e^jw)代入逆离散傅里叶变换公式中,可以得到单位脉冲响应hd(n)。
4. 根据求得的hd(n)求出其频率响应:
利用MATLAB中的fft函数对hd(n)进行傅里叶变换,得到其频率响应。
5. 根据频率响应验证是否满足技术指标:
利用MATLAB中的freqz函数对频率响应进行分析,验证是否满足技术指标。
根据上述步骤,可以得到MATLAB代码如下:
```matlab
% 窗函数法设计FIR数字高通滤波器
wp = 0.6*pi;
Rp = 1;
ws = 0.4*pi;
Rs = 50;
delta_w = ws - wp;
A = -20 * log10(Rp);
N = ceil((A - 8) / (2.285 * delta_w));
beta = 0.5842 * (pow(A, 0.4) - 1) + 0.07886 * A;
wc = (wp + ws) / 2;
n = 0:N;
hd = sin(wc*(N-n))./(pi*(N-n));
w = 0:0.01:pi;
H = freqz(hd, 1, w);
plot(w/pi, abs(H));
```
其中,freqz函数用于计算滤波器的频率响应,plot函数用于绘制幅频特性曲线。
用matlab频率采样法设计1型FIR数字滤波器,技术指标:wp=0.25pi,wst=0.35pi,As=20dB,Rp=2dB,给出h(n)表达式并绘制幅频特性
在MATLAB中,可以使用`fir1`函数设计一型有限 impulse response (FIR) 数字滤波器,满足给定的技术指标。对于指定的截止频率 wp 和 wst、衰减比 As 和 Rp,以下是步骤:
1. 首先,我们需要计算所需的滤波器长度 N。由于未直接提供具体的衰减率要求,通常会选取适当的比例来保证滤波效果。假设我们选择 `At = As / 20` 来表示相对于最大衰减的倍数,`Rp` 则对应于频率响应的平坦度。
2. 计算滤波器长度:
```matlab
At = 20; % 可以根据需要调整衰减率的具体值
wp_dB = 20 * log10(1 + As); % wp 的对数值
wp_rad = wp_dB / (2 * pi);
wst_rad = wst / (2 * pi);
% 滤波器长度一般取 wp 的倒数作为下限,wst 的倒数加1作为上限,加上额外的安全系数
N = ceil((1 / wp_rad - 1 / wst_rad) / At) + 1;
```
3. 设计滤波器:
```matlab
h = fir1(N, [wp_rad wst_rad], 'low'); % 设定低通滤波器结构,'low' 表示最小误差设计
```
4. 绘制幅频特性:
```matlab
[H, W] = freqz(h, 1, 8000); % 生成频率响应数据
figure;
plot(W/pi, 20*log10(abs(H))); % 幅频图
grid on;
xlabel('Normalized Frequency (\times \pi rad/sample)');
ylabel('Magnitude (dB)');
title(['Filter Design: wp=' num2str(wp) ', wst=' num2str(wst) ', As=' num2str(As) ', Rp=' num2str(Rp)]);
```
这里的 `h(n)` 表达式就是设计好的FIR滤波器系数数组,但是为了简洁,这里并没有显示整个数组。完整的系数可以通过 `disp(h)` 查看。
阅读全文