在滤波器设计中,经常需要知道滤波器的频率特性。测量滤波器的脉冲响应,能够精确地获取频率特性。但是如果无法进行精确的数字的脉冲响应运算的话,那么用Sine Sweep波(频率逐渐变高的正弦波,也叫做频率扫描)来测量系统的频率特性是再适合不过的了。例如我们可以用Sine Sweep波来测量某个Mp3播放器的的频率特性,以及设置不同的EQ(均衡器)之后的频率特性。我们可以让播放器播放某个特定的Sine Sweep文件,用录音设备记录下它的输出声音,查看录下来的波形就能大概知道系统的频率特性了。
为了符合人类的听觉特性,通常频率响应图的频率轴都采用对数坐标。因此我们要产生的Sweep波的频率变化就需要成指数增长。下面具体谈谈如何推导出这种 Sine Sweep波的函数方程。Sweep波的频率需要根据时间成指数增长,因此它的函数方程为
freq(f) = f0*k^t
其中f0为初始频率,k为增长系数,例如如果我们要产生f0 - f1的t0秒的Sweep波 的话,那么
k = exp(log(f1/f0)/t0)
我们知道频率为F的正弦波的函数为
sweep(t)=sin(2*PI*F*t)
那么把频率的变化 方程带入此式得
sweep(t)=sin(2*PI*f0*k^t*t)
这个公式是否正确,我写了一个程序测试,程序按照f0=20Hz, f1=20kHz, t0=50s 设置,结果发现37秒左右的时候就已经达到了20kHz的频率了。所以这个公式是错误的。
那么错在什么地方呢?我们从频率的基本概念入手,重新考虑这个问题。所谓频率就是相位的变化率,所以频率是相位的导数,相位是频率的积分。当频率函数为常数F也就是freq(t)=F时,那么相位函数为freq(t)的积分与2PI的乘积