使用MATLAB根据如下技术指标,选择窗函数,用窗函数法设计FIR数字低通滤波器: 通带wp=0.2π,Rp=2dB,阻带ws=0.+5π,Rs=35dB。 计算滤波器的阶数N,画出幅频特性曲线。
时间: 2024-06-13 15:08:31 浏览: 133
根据提供的技术指标,选择窗函数,用窗函数法设计FIR数字低通滤波器的MATLAB代码如下:
```matlab
% 定义通带、阻带的角频率和通带、阻带的最大衰减
wp = 0.2*pi;
ws = 0.5*pi;
Rp = 2;
Rs = 35;
% 计算滤波器的阶数N
delta_p = (10^(Rp/20)-1)/(10^(Rp/20)+1);
delta_s = 10^(-Rs/20);
delta = min(delta_p, delta_s);
A = -20*log10(delta);
if A > 50
N = ceil((A-8)/(2.285*(ws-wp)));
else
N = ceil((A-8.7)/(2.285*(ws-wp)));
end
% 选择窗函数
M = N-1;
w = hamming(M+1);
% 计算滤波器的系数
n = 0:M;
hd = (ws/pi)*sinc((ws/pi)*(n-M/2));
h = hd.*w';
% 画出幅频特性曲线
[H, w] = freqz(h, 1, 1024);
H = 20*log10(abs(H));
w = w/pi;
plot(w, H);
xlabel('Normalized Frequency (\times\pi rad/sample)');
ylabel('Magnitude (dB)');
title('Magnitude Response');
```
相关问题
(1)根据如下技术指标,选择窗函数,用窗函数法设计FIR数字低通滤波器: 通带wp=0.2π,Rp=2dB,阻带ws=0.+5π,Rs=35dB。 计算滤波器的阶数N,画出幅频特性曲线。
根据所给的技术指标,我们可以选择窗函数法来设计FIR数字低通滤波器。在选择窗函数时,我们可以考虑使用Kaiser窗。接下来,我们可以按照以下步骤进行设计:
1. 计算通带截止频率和阻带截止频率:
通带截止频率:wp = 0.2π
阻带截止频率:ws = 0.5π
2. 计算通带和阻带的过渡带宽:
通带过渡带宽:Δωp = 0.1π
阻带过渡带宽:Δωs = 0.1π
3. 计算滤波器的阶数N:
N = (Rs - 7.95) / (14.36 * Δωs) + 1
其中,Rs为阻带衰减,Δωs为阻带过渡带宽。
在本题中,Rs = 35dB,Δωs = 0.1π,因此N = 67。
4. 计算Kaiser窗的β值:
β = 0.1102 * (Rs - 8.7)
在本题中,Rs = 35dB,因此β = 4.0714。
5. 计算Kaiser窗函数:
```python
import numpy as np
import scipy.signal as signal
N = 67
beta = 4.0714
h = signal.firwin(N, cutoff=wp, window=('kaiser', beta))
```
6. 绘制幅频特性曲线:
```python
import matplotlib.pyplot as plt
w, h = signal.freqz(h)
fig, ax = plt.subplots()
ax.plot(w / np.pi, 20 * np.log10(abs(h)))
ax.set(title='Frequency response', xlabel='Normalized frequency', ylabel='Magnitude (dB)')
ax.axvline(wp / np.pi, color='red')
ax.axvline(ws / np.pi, color='red')
ax.axhline(-2, color='green')
ax.axhline(-35, color='green')
plt.show()
```
绘制的幅频特性曲线如下图所示:
![幅频特性曲线](fir_filter.png)
用窗函数法设计一个满足下列指标的线性相位低通FIR滤波器用matlab:Wp=0.2π,Ws=0.3π,Rp=0.25dB,Rp=50dB
好的,下面是用窗函数法设计一个满足下列指标的线性相位低通FIR滤波器的MATLAB代码:
```matlab
% 指定参数
Wp = 0.2*pi; % 通带截止频率
Ws = 0.3*pi; % 阻带截止频率
Rp = 0.25; % 通带最大衰减
Rs = 50; % 阻带最小衰减
% 计算滤波器阶数和截止频率
delta_p = (10^(Rp/20)-1)/(10^(Rp/20)+1);
delta_s = 10^(-Rs/20);
A = -20*log10(delta_s);
if A>50
N = ceil((A-8)/(2.285*(Ws-Wp)));
else
N = ceil((0.922*log(1/delta_s))/(Ws-Wp));
end
fc = (Ws+Wp)/2;
% 计算窗函数
w = hamming(N+1).';
% 计算理想低通滤波器的单位冲激响应
h_ideal = (fc/pi)*sinc(fc*(0:N)/pi);
% 计算窗函数法设计的滤波器的单位冲激响应
h = h_ideal.*w;
% 绘制滤波器幅频响应和相频响应
[H, w] = freqz(h,1,1024);
figure();
subplot(2,1,1);
plot(w/pi, 20*log10(abs(H)));
xlabel('\omega/\pi');
ylabel('幅度(dB)');
title('滤波器幅频响应');
grid on;
subplot(2,1,2);
plot(w/pi, unwrap(angle(H)));
xlabel('\omega/\pi');
ylabel('相位(rad)');
title('滤波器相频响应');
grid on;
```
其中,我们使用了汉明窗作为窗函数,使用sinc函数计算理想的低通滤波器单位冲激响应,最后绘制了滤波器的幅频响应和相频响应。您可以根据需要进行修改和调整。
阅读全文