凯泽窗函数法设计FIR数字带通滤波器,设计指标为:wp1=0.35pi,wp2=0.65pi,ws1=0.2pi,ws2=0.8pi,Rp=1db,Rs=60db,matlab代码中文
时间: 2023-07-14 13:12:22 浏览: 172
以下是使用凯泽窗函数法设计FIR数字带通滤波器的Matlab代码:
```matlab
% 定义滤波器的参数
wp1 = 0.35*pi;
wp2 = 0.65*pi;
ws1 = 0.2*pi;
ws2 = 0.8*pi;
Rp = 1;
Rs = 60;
% 计算通带和阻带的边界频率
wp = [wp1, wp2];
ws = [ws1, ws2];
% 计算通带和阻带的宽度
wp_width = wp2 - wp1;
ws_width = ws2 - ws1;
% 计算通带和阻带的中心频率
wc1 = sqrt(wp1*wp2);
wc2 = sqrt(ws1*ws2);
% 计算滤波器的阶数和截止频率
delta_p = 10^(-Rp/20) - 1;
delta_s = 10^(-Rs/20);
A = -20*log10(delta_s);
if A > 50
N = ceil((A - 7.95)/(14.36*ws_width/pi));
else
N = ceil(3.3/ws_width);
end
if rem(N, 2) == 0
N = N + 1;
end
M = (N-1)/2;
wc = (wc1 + wc2)/2;
% 计算凯泽窗函数的参数
beta = 0.1102*(A - 8.7);
if A > 50
alpha = (A - 7.95)/14.36/ws_width;
else
alpha = 0.25*(A - 21)^0.5/pi/ws_width;
end
% 生成凯泽窗函数
n = -M:M;
w = kaiser(N, beta);
% 计算理想的频率响应
Hd = zeros(1, length(n));
for i = 1:length(n)
if n(i) == 0
Hd(i) = wc/pi;
else
Hd(i) = (sin(wc*n(i))/pi/n(i))*(cos(alpha*pi*n(i))/((1 - (n(i)/M)^2)^0.5));
end
end
% 根据窗函数和理想的频率响应计算实际的频率响应
H = Hd.*w';
% 使用fir1函数生成滤波器系数
b = fir1(N-1, wc/pi, 'bandpass', Hanning(N));
% 绘制滤波器的幅频特性
freqz(b, 1, 1024, 2*pi);
```
该代码将生成一个FIR数字带通滤波器,并绘制其幅频特性。可以根据需要修改滤波器的参数,如通带边界频率、阻带边界频率、通带和阻带的宽度等来满足实际应用的需求。
阅读全文