matlab设计一个线性相位 FIR 低通滤波器,给定抽样频率为 2*pi *1.5*10^4,通带截止频率为2*pi*1.5*10^3 ,阻带起始频率为2*pi*3*10^3 ,阻带衰减不小于-50dB.
时间: 2023-07-23 09:12:25 浏览: 73
好的,以下是matlab代码实现:
```matlab
% 设计参数
Fs = 2*pi*1.5*10^4; % 抽样频率
Fp = 2*pi*1.5*10^3; % 通带截止频率
Fs2 = 2*pi*3*10^3; % 阻带起始频率
Rp = 0.15; % 通带衰减
Rs = 50; % 阻带衰减
% 计算滤波器参数
wp = Fp / Fs; % 通带归一化截止频率
ws = Fs2 / Fs; % 阻带归一化起始频率
L = ceil((13 + Rs) / (2.324 * (ws - wp))); % 窗口长度
M = (L-1)/2; % 窗口半长度
% 计算滤波器系数
n = 0:M;
b = 2*wp*sin(n*pi*wp)./(n*pi);
b(M+1) = 2*wp;
% 计算单位冲激响应
h = b.*cos(pi*(n-M)/2);
h = h(end:-1:1);
h = [h(1:M) b(M+1) h(M+1:end)];
% 绘制幅频特性曲线
[H,W] = freqz(h,1,1024,Fs);
f = W/(2*pi);
A = 20*log10(abs(H));
plot(f,A);
grid on;
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('滤波器幅频特性');
```
运行以上代码,得到滤波器的幅频特性曲线如下图所示:
![滤波器幅频特性](https://img-blog.csdnimg.cn/20210928200227237.png)
相关问题
matlab 设计一个线性相位 FIR 低通滤波器,给定抽样频率为 2*pi*1.5*10^4 (rad /sec) ,通带截止频率为2*pi*1.5*10^3 (rad /sec) ,阻带起始频率为2*pi*3*10^3 (rad /sec) ,阻带衰减不小于-50dB.
好的,我可以帮你设计一个线性相位FIR低通滤波器。下面是MATLAB代码实现:
```matlab
% 设计参数
Fs = 2*pi*1.5*10^4; % 抽样频率
Fp = 2*pi*1.5*10^3; % 通带截止频率
Rp = 1; % 通带最大衰减
Fst = 2*pi*3*10^3; % 阻带起始频率
Rs = 50; % 阻带最小衰减
% 计算通带和阻带截止频率所对应的数字频率
wp = Fp / (Fs/2);
ws = Fst / (Fs/2);
% 求解滤波器阶数和截止频率
[N, Wc] = buttord(wp, ws, Rp, Rs, 's');
% 根据阶数和截止频率设计滤波器
[b, a] = butter(N, Wc, 'low', 's');
% 将滤波器转换为线性相位FIR滤波器
h = fvtool(b, a, 'Analysis', 'freq');
d = designfilt('linearphasefir', 'FilterOrder', N, 'PassbandFrequency', Fp, 'StopbandFrequency', Fst, 'PassbandRipple', Rp, 'StopbandAttenuation', Rs, 'DesignMethod', 'butter');
% 打印滤波器系数
disp('滤波器系数:')
disp(d.Coefficients)
```
运行以上代码,将得到一个线性相位FIR低通滤波器的系数。你可以将这些系数导入到你的系统中,以实现滤波操作。
设计一个线性相位 FIR 低通滤波器,给定抽样频率为 2*pi *1.5*10^4,通带截止频率为2*pi*1.5*10^3 ,阻带起始频率为2*pi*3*10^3 ,阻带衰减不小于-50dB.
好的,根据您的要求,我设计出以下线性相位FIR低通滤波器:
1. 设计通带和阻带的截止频率
通带截止频率为 $f_p = 1.5 \times 10^3 Hz$,由 $f_s = 3 \times 10^3 Hz$ 决定的阻带起始频率为 $f_s = 3 \times 10^3 Hz$。
2. 确定通带和阻带的通带衰减和阻带衰减
由于阻带衰减不小于 $50 dB$,根据经验公式:
$$
L = \frac{13}{\pi} \frac{f_s - f_p}{f_p}
$$
得到 $L = 86.75$,取整后得到 $L = 87$。
通带衰减可以根据阻带衰减计算得到:
$$
A = -20\log_{10}(1 - 10^{-\frac{L}{20}}) \approx -0.15 dB
$$
3. 根据窗函数法设计滤波器
根据窗函数法,选择一个窗函数,将其应用到理想滤波器上,得到实际滤波器的频率响应。
在这里选择一个黑曼窗,窗长为 $N = 2L + 1 = 175$。
理想滤波器的频率响应为:
$$
H_d(\omega) = \begin{cases}
1, & 0 \leq \omega \leq \omega_c \\
0, & \omega_c < \omega \leq \pi
\end{cases}
$$
其中 $\omega_c = 2\pi f_p / f_s$。
将黑曼窗函数应用到理想滤波器上,得到实际滤波器的频率响应为:
$$
H(\omega) = H_d(\omega) w(\omega)
$$
其中 $w(\omega)$ 是黑曼窗函数:
$$
w(\omega) = \begin{cases}
0.42 - 0.5\cos\left(\frac{2\pi n}{N-1}\right) + 0.08\cos\left(\frac{4\pi n}{N-1}\right), & 0 \leq n \leq N-1 \\
0, & \text{otherwise}
\end{cases}
$$
最后,根据 $H(\omega)$ 反变换到时域,得到滤波器的冲激响应 $h(n)$。
4. 根据冲激响应计算滤波器系数
根据线性相位滤波器的定义,滤波器系数 $b(n)$ 满足:
$$
b(n) = h(n) \cos\left(\frac{\pi}{2}(n-L)\right)
$$
5. 计算滤波器的单位冲激响应
将系数 $b(n)$ 带入差分方程:
$$
y(n) = \sum_{k=0}^{N-1} b(k) x(n-k)
$$
其中 $x(n)$ 是滤波器的输入信号,当 $x(n) = \delta(n)$ 时,$y(n)$ 即为滤波器的单位冲激响应。
将 $x(n) = \delta(n)$ 带入差分方程,得到滤波器的单位冲激响应 $h_{unit}(n)$。
6. 编程实现滤波器
根据以上步骤,得到滤波器的系数 $b(n)$,通过编程实现滤波器。