查看: 2459|回复: 17|关注: 0

[已解决] 把滤波器的频率响应曲线和所处理信号的频谱图画一起

[复制链接]

新手

19 麦片

财富积分


050


11

主题

40

帖子

0

最佳答案
  • 关注者: 1
本帖最后由 wdmzszz 于 2018-12-28 09:25 编辑

宋老师您好,
我想请教一个小技巧,不知道您之前有了解么:

如何将滤波器的频率响应曲线和所处理的信号的频谱图画在一起?


比如下面这个低通滤波器的图,我用这个滤波器提取了信号的前7次谐波,我怎么才能画出来 图中 黑色的这条线 (这条线就表示的我这个滤波器的频率响应)呢??

再比如,这个逆陷波器的图,我提取了第7次谐波,也是想把黑色的这条线 一块画在图上

这样可以更直观的直接从图上就能看到滤波器的效果。但是找不到合适的方法能这么画出来。。。希望能得到您的指点。。谢谢啦

逆陷波

逆陷波

低通

低通

论坛优秀回答者

17

主题

5099

帖子

1116

最佳答案
  • 关注者: 605
发表于 2018-12-28 16:33:56 | 显示全部楼层 |此回复为最佳答案
这个问题是不难解决的。设信号画出频谱为
plot(freq,abs(X(n2))*2/N);
hold on
低通滤波器系数为[b,a],则滤波器的响应曲线可调用freqz函数得到,响应曲线最大值为1,为了使响应曲线与频谱图能如LZ显示那样,在显示滤波器响应曲线幅值时乘上一个倍数,如下所示。
[H,w]=freqz(b,a);
plot(w/pi*fs/2,700*abs(H),'r')
得到的图如下。又对于陷波器也一样,知道滤波器系数为[b,a]后,一样得到响应曲线,乘倍数后叠加到频谱图上。
dm11a.jpg

新手

19 麦片

财富积分


050


11

主题

40

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-28 21:14:44 | 显示全部楼层
songzy41 发表于 2018-12-28 16:33
这个问题是不难解决的。设信号画出频谱为
plot(freq,abs(X(n2))*2/N);
hold on

好的好的,谢谢老师,我试试看~~

新手

19 麦片

财富积分


050


11

主题

40

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-1-4 11:17:34 | 显示全部楼层
songzy41 发表于 2018-12-28 16:33
这个问题是不难解决的。设信号画出频谱为
plot(freq,abs(X(n2))*2/N);
hold on

宋老师您好,关于这个,我还有几个小问题想请教您:

图1就是在您的指点下画出来的。只不过在这里,我没有自行的 进行 *700 这样的操作,而是在左边又建立了一个新的尺度 (因为我感觉直接把归一化的这个幅度自行的 *700, 可能会不够严谨)。所以关于 幅频响应曲线,我是这样处理的:
yyaxis right;
[H,w]=freqz(b,a);
plot(w/pi*fs/2, abs(H),'k','LineWidth',1)


我有三个问题,都在图上用绿色的线标注了:

1. 和实际信号的频谱图对比着看,我这样画出来的结果好像是不对的,怎么幅频响应曲线把一次谐波拦腰截断了啊??。。。因为最终的目的是想把 滤波器的幅频响应 和 滤过的信号的频谱 画在一起,这样比较一目了然。但是我画出来的好像不对。。。不知道哪里出了错。。


2. 我用的是一段钢琴信号(图1是画的是它前两帧的频谱),然后这段信号被加上了高斯白噪声(比如把信噪比设成了0dB,看滤完以后信噪比是多少dB了)。我想问,这里我用的FIR 低通滤波器,我设成了 60-order 和 截取前7次谐波。这样合理么??(因为我实在是没什么概念。。。我知道可以用低通滤波器来滤波,但是不知道怎么具体的来设置这个滤波器。), 因为不知道数据该怎么设置,我就对比了 20-order+截取前7次谐波, 和  60-order+截取前14次谐波的情况,发现 60-order+截取前7次谐波 是滤完以后信噪比提升最多的,,我就准备用这种设置了(这种对比方式不知道是否可行)。。

3. 如果能按我设想的,画出来滤波器的频率响应的话。。右边的这个 y 轴 应该标什么单位呢??

期待着您的回复~~谢谢

图1

图1

论坛优秀回答者

17

主题

5099

帖子

1116

最佳答案
  • 关注者: 605
发表于 2019-1-4 18:27:41 | 显示全部楼层
wdmzszz 发表于 2019-1-4 11:17
宋老师您好,关于这个,我还有几个小问题想请教您:

图1就是在您的指点下画出来的。只不过在这里,我没 ...

LZ是用双坐标轴(Y轴)来画。
1,实际止是没有关系的,因为谱曲线与滤波器响应曲线是两个坐标系统。如果LZ感到别扭,可以改变第2个纵坐标的刻度,例如右1语句ylim([0 1.05]),这样滤波器响应曲线就会往止移。
2,如果滤波器的截止频率相同,则阶数不同是阻带衰减不同。设计滤波器往往有一个指拦:As,表示在阻带处应该衰减多减dB。
用滤波器来减噪,是减噪的一种方法。
60-order+截取前7次谐波和60-order+截取前14次谐波,因为后者带宽宽,所以噪声就会大,信噪比减少七 些。LZ需要取多少阶谐波?同样是7次谐波,不妨试一下80,100阶。。。
3,滤波器响应曲线表示时Y轴一般 也写为“幅值”。

新手

19 麦片

财富积分


050


11

主题

40

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-1-5 09:59:19 | 显示全部楼层
songzy41 发表于 2019-1-4 18:27
LZ是用双坐标轴(Y轴)来画。
1,实际止是没有关系的,因为谱曲线与滤波器响应曲线是两个坐标系统。如果L ...

嗯嗯。 谢谢老师的耐心指点,理解一下:

1. 就是我图1画出来的其实也算是对的是吧,就是看着有别扭,但是起码表现出了滤波器在频域的操作。(用您的方法改了一下值间隔,效果看起来更好了)

2. 关于这个 As, 我不知道阻带处该衰减多少dB...(因为原始信号是没有噪声的,我自己加的高斯白噪声)。我知道的情况是这样的:阶数越大,滤波器相应起来会越 “陡”, 也就是越接近理想的幅频相应曲线但是阶数变大会引起什么副作用么?我记得是会使滤波器的延迟变严重,(不过我试了一下 160 阶的,都不影响截取前七次谐波)。
我这样理解对么:通带宽加宽了,提取了更多的有用信号频谱 同时也把噪声一块截进去了。但是由于频谱越往后 有用信号的频谱占比越来越少了(看上面的频谱图,貌似是这样的,就好像:第七次谐波之后,越往后,截取的越多,“性价比”越低)。

3. 您说的,80阶, 100阶,我试了一下,还有 160 阶的都试了一下,画出来幅频效果都更理想了一些,(更陡了),但是对 信噪比的 提升帮助不大,,所以我决定还是用 60阶的FIR滤波器。其实我的任务描述起来很简单:就是找一种合适的数字滤波器,来逐帧的滤除一段音乐信号的噪声(这个噪声是自己在之前按照几种不同的信噪比加上去的高斯白噪声),最后能改善信噪比就成。目前有三种滤波器都合适:FIR/IIR低通,FIR/IIR带通(多个通带的组合),逆陷波器(也是多通带组合,这样多提取几次谐波)可是关于这个 “合适”,我肯定最后想让这三种滤波器的效果都达到最好。但是就以 FIR/IIR低通 为例吧,它有两个我可调节的地方:一是 滤波器的阶数, 二是 我想要截取的谐波数。这两个可调节的地方,我都不知道怎么取才能让效果最优(理论上),,就按自己的感觉测了几次,感觉 60阶+7次谐波效果好像还OK, 我就决定这么设定了。。。

尤其是 这个截取的谐波数,我是观察 信号的频谱图,感觉前7次谐波的幅值比较明显一点,就决定取前7次谐波的。我不知道这样合理么?还有再极端一点的话,如果我只取前两次谐波可以么?(会原始信号有明显的破坏么?这样信号听起来会有问题。。?)。。
这样理解您看对么:信号的频谱,在频谱图会“蔓延”很远,只不过信号的能量(或者说信号的信息)主要都包含在前几次谐波上,(在往后的那些,幅值都好小啊,,也就代表了包含了很少的原始信号的信息??)

谢谢~


论坛优秀回答者

17

主题

5099

帖子

1116

最佳答案
  • 关注者: 605
发表于 2019-1-5 20:27:15 | 显示全部楼层
wdmzszz 发表于 2019-1-5 09:59
嗯嗯。 谢谢老师的耐心指点,理解一下:

1. 就是我图1画出来的其实也算是对的是吧,就是看 ...

2,对,阶数越大,滤波器在过渡带的衰减会越陡,但阶数大延迟也大(FIR滤波器可以修正),运算量也大。
从上图看到,在7阶后的谐波幅值往往与噪声接近或小于噪声的幅值, 所以只截取前7阶较为合理。或者LZ应多观察一些note,低、中音和高音,是否为这种情况。在截止频率方面是设置7阶反还是设定一个带宽天好。
3,在滤波器止,有可能阶数增加效果不会继续增加,这就是和 As有关,群众关系曾为,除了变陡外,阻带衰减As增加。所以滤波器设计时要设定As,求出的就是最佳的滤波器阶数。

新手

19 麦片

财富积分


050


11

主题

40

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-1-6 13:14:17 | 显示全部楼层
本帖最后由 wdmzszz 于 2019-1-6 13:15 编辑
songzy41 发表于 2019-1-5 20:27
2,对,阶数越大,滤波器在过渡带的衰减会越陡,但阶数大延迟也大(FIR滤波器可以修正),运算量也大。
...

谢谢老师~~
另外有个小问题哈:看您的书里有涉及过陷波器。。不知道您有了解过 逆陷波器么??我想请教怎么画它的幅频响应曲线 (具体的数据,公式,流程图,我昨天的一个问题 “关于逆陷波器的幅频响应曲线” 里面都列出来了,可能您还没来得急看)。。或者您指点一下怎么画 陷波器的幅频响应曲线 也OK,应该是类似的。谢谢啦~

论坛优秀回答者

17

主题

5099

帖子

1116

最佳答案
  • 关注者: 605
发表于 2019-1-6 21:50:53 | 显示全部楼层
陷波器的设计用iirnotch函数,得到滤波器系数a和b,通过freqz函数可以看幅频响应。

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
发表于 2019-1-17 11:48:53 | 显示全部楼层
songzy41 发表于 2019-1-6 21:50
陷波器的设计用iirnotch函数,得到滤波器系数a和b,通过freqz函数可以看幅频响应。
...

老师您好,我的matlab中用得也是您说的这个方式,我的算法中有16次的循环使用,现在是想要把这16次的响应结果结合到一张图,我用到了hold on,但是奇怪的是,所有的幅频相叠在一起了,但是相频没有,请问是为什么呢?

我的代码是这样的:
for i=1:16
        fs2 = fs;%sampling rate 采样率
        f0 = 490.25*i;%notch frequency 需要过滤的频率
        fn = fs2/2;%Nyquist frequency 奈奎斯特频率
        freqRatio = f0/fn;%ratio of notch frequency to Nyquist frequency.
               
        bw=freqRatio/33;
        [b,a]=iirnotch(freqRatio,bw);
               
%         figure;
        freqz(b,a);
%         fvtool(b,a);%单独出频域特性幅频图
        hold on;

1.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表