weixin_51155228 2021-05-01 17:09 采纳率: 0%
浏览 57

matlab设计带通滤波器求幅频响应的问题。

figure 
fa=4, fb=25; %通带频率
fl=1, fh=28;  %阻带边界频率
rp=3, rs=20; %通带3dB的波纹,阻带20dB的衰减
wpa=fa/500;%采样率为1000hz是截止频率的2倍,则算归一化频率时除500hz
wpb=fb/500; 
wl=fl/500; 
wh=fh/500;  
wp=[wpa wpb];
ws=[wl wh]; 
[n,wn]=cheb2ord(wp,ws,rp,rs); 
[num,den]=cheby2(n,rp,wn,'bandpass'); 
[h,f]=freqz(num,den,256,1000); %256采样点
h=20*log10(abs(h)); 
plot(f,h);grid on; 
%axis([0,50,-50,40]); 
title('切比雪夫滤波器'); 

运行程序之后得到的幅频响应与给定的频率指标不一样是为什么,而且为什么会出现间断,是频率指标的问题吗?求大佬解答。

 

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-14 17:45
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据您提供的代码,问题可能出现在定义通带频率和阻带边界频率时的归一化处理上。在代码中,通带频率fa和fb以及阻带边界频率fl和fh都是以频率单位表示,但在计算归一化频率wpa,wpb,wl,wh时,将它们除以500,这是因为采样率为1000Hz时的归一化频率计算需要基于Nyquist频率的一半,即采样率的一半。 然而,在计算归一化频率时,可能应该将通带频率fa和fb以及阻带边界频率fl和fh除以采样率1000Hz,而不是500。这可能导致定义的通带和阻带频率位置与实际程序中使用的位置不一致,从而造成幅频响应与预期不符的情况。 下面是修正后的代码示例:
    figure
    fa = 4;
    fb = 25; % 通带频率
    fl = 1;
    fh = 28; % 阻带边界频率
    rp = 3;
    rs = 20; % 通带3dB的波纹,阻带20dB的衰减
    wpa = fa / 1000; % 采样率为1000Hz
    wpb = fb / 1000;
    wl = fl / 1000;
    wh = fh / 1000;
    wp = [wpa wpb];
    ws = [wl wh];
    [n, wn] = cheb2ord(wp, ws, rp, rs);
    [num, den] = cheby2(n, rp, wn, 'bandpass');
    [h, f] = freqz(num, den, 256, 1000); % 256采样点
    h = 20 * log10(abs(h));
    plot(f, h);
    grid on;
    title('切比雪夫滤波器');
    

    通过将通带频率和阻带边界频率除以采样率1000Hz进行归一化处理,可以更准确地定义滤波器的频率范围,从而得到更符合预期的幅频响应。另外,请确保之前的通带和阻带频率定义是正确的。 至于幅频响应图中出现间断的问题,可能是由于绘制图像时的采样点数量不足造成的。您可以尝试增加采样点数量,例如调整freqz函数中的第三个参数256,以获得更加平滑的频率响应曲线。

    评论

报告相同问题?