关于正弦调频的信号频谱的理解
简短地记载一下之前师兄问的一个问题的探讨。
是这样子的,实验室一个师兄之前要做一个仿真,里面需要仿一个信号源,这个信号源的频率要随正弦变换,也就是时频图如下图所示的那种信号:然后他过来问我怎么仿,我随手在草稿纸上写了个公式,也没多加思考:
\(sin(\omega_0 sin(\omega_1 t)t)\)
熟悉通信的调频的童鞋应该一眼可以看出这个是错的,但是我当时一时没想明白,一个恒定频率的信号是\(sin(\omega_0 t)\),那么频率要正弦变化,就把\(\omega_0\)变成\(\omega_0sin(\omega_1 t)\)不就好了?
Matlab 代码
频率会一直随着时间一直往上跑,我当时还不信邪,总感觉是不是Matlab小波搞错了,于是乎,我就用Mathematica跑了一下,把声音放出来听听,结果如下:
声音我就不附上了,代码很短,大家自己有环境的可以自己去听听。
总之就是我的公式是错的,当时一时也没想起调频信号要怎么写,总感觉就是我那样写啊;
实际上正解是:
\(sin(\omega_0 sin(\omega_1 t))\)
上面那个信号画出来就是本文最上面那幅图的时频谱了。
为什么是把\(t\)变成\(sin(\omega_1 t)\)而不是把\(\omega_0\)变成\(\omega_0sin(\omega_1 t)\),后来想想也对,之所以变换\(t\),就是把这个过程理解成时间像弹簧一样拉伸收缩,时间一会儿快一会儿慢,最后就等价为频率一会儿快一会儿慢了。再者,可以直接求一下导就会发现斜率的变化,原本那个错误的会因为外面多了一个\(t\)消不掉而最后变化频率随着\(t\)的增大而不断增大。
然后本来以为这个问题结束了,但是师兄突然又问了一个问题,他说,根据J-A公式,把\(sin(\omega_0 sin(\omega_1 t))\)按贝塞尔展开,不就变成:
\(sin(\omega_0 sin(\omega_1 t))=2\sum_{m=1}^{\infty}J_{2m-1}(\omega_0)sin((2m-1)\omega_1t)\)
也就是说这个信号是由\(\omega_1\)的各个奇次谐波构成的,那么怎么可能会像上面的时频谱那样可以进行连续扫频呢?
大家可以做一下FFT,就知道确实这样,但是画出时域的波形确实是我们扫频的效果啊!!一会儿高频,一会儿低频,而且是连续变化的。
其实看穿这个问题的同学会不会觉得这个问题很无聊?
这个其实就是一个频谱和时频谱的区别啊:FFT算出来的是纵观整个信号得出来的频谱,也就是说我只要这些奇次谐波就可以构造出来这个信号,这里每个信号都是无限长的。但是,时频图所在意的是每个时刻附近有哪些频率,这个在意的只是特定时刻有哪些频率,也就是说,有可能你各个奇次谐波叠加的和,在\(t=100\)到\(t=100.1\)这个小时间片内,“看起来”频率就像1.5次谐波的频率一般,这完全有可能的嘛!!
好吧,这就算小小记录一下之前的那次讨论;
【完】
本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com