网友xukun977提到,人之所以能够听到“拍音”,是因为人耳的非线性响应引起的,如果人耳响应是线性的,那么就不能听到“拍音”了。关于这个问题,我也来参合一下,尝试从数学的角度来证明一下这种观点是错误的。
首先我要先澄清一下,我们这里所探讨的非线性,是指人耳对声音振幅大小响应的非线性,而非人耳能够听到声音大小的这种非线性,因为严格意义上说,如果对声音的响应是完全线性的,那么人将听不到正弦信号,因为其平均值为0。所以我们这里指的线性和非线性,是指对振幅大小的响应。
假设一个正弦信号的表达式为A*sin(ωt),其中A为其振幅,ω是角频率。假设人耳对该信号的响应是线性的,那么当振幅A增大时,我们将听到声音增大;当振幅A减小时,我们将听到声音变小,这个大家没什么疑问吧?(事实上,只要人耳响应是单调的,我们就能感知到幅度A变化时的变化,而和人耳是不是非线性的没有关系)。
进一步,假设振幅A是随着时间的变化而变化的,那么我们将会听到大小随时间变化的声音,是不是?很自然地,我们可以把振幅A随时间t变化的这种关系,用一个函数来表示,即A=f(t)。特别地,我可以选取这个函数f(t)为一个余弦函数cos(at),即A=cos(at),其中a表示角频率,且其值很小,即变化较慢。那么我们将会听到一个声音大小随时间t变化而周期性变化的声音,准确来说,是听到一个声音大小按余弦函数cos(at)变化的声音(当然前提是人耳响应要是线性的)。OK,如果到这里你觉得按照前面的假设不能听到周期性变化的声音,那么就不用往下看了,否则,请继续往下看。
好了,我们听到的这个周期性变化的信号,就是:
A*sin(ωt) = cos(at)*sin(ωt) = sin(ωt)*cos(at)(将A用cos(at)代入然后交换)
按照三角函数的积化和差公式,有
sin(α)*cos(β)=[sin(α+β)+sin(α-β)]/2
我们将前面得到的sin(ωt)*cos(at)代入到这个公式,有
sin(ωt)*cos(at) = [sin((ω+a)t)+sin((ω-a)t)]/2 = 0.5*sin((ω+a)t) + 0.5*sin((ω-a)t)
从式中可以看到,我们刚刚听到的那个声音大小按余弦信号变化的信号,其实就是0.5*sin((ω+a)t) 和 0.5*sin((ω-a)t)这两个余弦信号的相加合成效果,即我们所说的“拍音”。由于cos(at)在一个周期内会出现一个波峰和一个波谷,所以我们在一个周期内会听到两次最大值和两次最小值(类似全波整流的波形),因此“拍音”的频率为信号cos(at)频率的两倍,即角频率为2a。而0.5*sin((ω+a)t) 和 0.5*sin((ω-a)t)这两个信号,可以分别看成是角频率为ω+a和ω-a的两个信号,其频率差刚好为2a。
不知道这样解释之后,能说明人之所以会听到“拍音”,和人耳的非线性无关了么? |