网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> 服务导航 >> 帮助中心 >> C6000 >> 文章正文
  计算波形的包络           ★★★ 【字体:
计算波形的包络
作者:Free    文章来源:本站原创    点击数:    更新时间:2008-2-29    

前面的文章中介绍过如何产生Sine Sweep波(频率扫描正弦波)。今天我们来看看如何运用这种波形来测量滤波器的频率响应。

假设我们要测量某种mp3播放器的均衡器的频率响应。先把sweep波的wave文件保存到mp3播放器中,然后我们用电脑分别录下 开/关 均衡器时的播放结果。由于录音回路的频率响应可能不为常数,因此需要录下关掉均衡器时的结果。如果用wave编辑软件看这两个录音结果的话,就可以大致看出均衡器的频率响应了。例如下面是我做的的一个例子,为了特意让关均衡器的时候频率响应不恒定,我打开了一个高通滤波器。

均衡器关闭时
均衡器开启时

通过看这两个波形,均衡器的频率响应一目了然。但是我们希望把它做成图,测量出中心频率和最大增益。这就需要检测出两个波形的包络,把同时刻两个包络的差值找出来。

下面我们来看看如何计算出包络。这个算法很简单:用一个变量e去跟踪输入x的变化,当x>e时,e以很快的速度向x靠近,当x

ATTACK_TIME = 0.001
RELEASE_TIME = 0.5
SAMPLINGE_RATE = 44100 
def findenvelop(data):
    envelop = []
    e = 0.0
    ga, gr = exp(-1.0/(SAMPLINGE_RATE*ATTACK_TIME)), 
exp(-1.0/(SAMPLINGE_RATE*RELEASE_TIME))
    ga1, gr1 = 1.0 - ga, 1.0 - gr
    for x in data:
        if e < x:
            e *= ga
            e += ga1*x
        else:
            e *= gr
            e += gr1*x
        envelop.append(e)   
    return envelop

分别对上面的两个声音文件进行包络计算,然后将相应频率的数值的差(实际上是求商)转换成dB,绘制成如下的频率响应图,同时用程序找出差的最大值: 10dB,在300Hz附近。

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号