![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
||||||
| 计算波形的包络 | ||||||
作者:Free 文章来源:本站原创 点击数: 更新时间:2008-2-29 ![]() |
||||||
|
前面的文章中介绍过如何产生Sine Sweep波(频率扫描正弦波)。今天我们来看看如何运用这种波形来测量滤波器的频率响应。 假设我们要测量某种mp3播放器的均衡器的频率响应。先把sweep波的wave文件保存到mp3播放器中,然后我们用电脑分别录下 开/关 均衡器时的播放结果。由于录音回路的频率响应可能不为常数,因此需要录下关掉均衡器时的结果。如果用wave编辑软件看这两个录音结果的话,就可以大致看出均衡器的频率响应了。例如下面是我做的的一个例子,为了特意让关均衡器的时候频率响应不恒定,我打开了一个高通滤波器。
通过看这两个波形,均衡器的频率响应一目了然。但是我们希望把它做成图,测量出中心频率和最大增益。这就需要检测出两个波形的包络,把同时刻两个包络的差值找出来。 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条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|