音频扫频振动算法

  • 扫频振动是指用一个连续变化但不间断的频率进行振动的测试方法。

  • 一般会设定两或三个值(A,B或A,B,C),A-B-A或A-B-C-A的过程为一个周期。用 [1] 作为单位表示上升和下降区间内的变化快慢。

  • 来源于 百度百科

  • 扫频的参数有 起始频率,结束频率,扫频时间段

  • 算法如下:

	//frame 为帧数
   private func createSweepData(_ f0:Double,_ f1:Double,sweepTime:Double,sampleRate:Int,peak:Int,frame:Int) -> Int16 {
        let k = exp(log((f1)/f0)/sweepTime)
        let dt = 1.0/sampleRate
        let p = 2*Double.pi*f0/log(k)
        let fsweap = Int(sampleRate*sweepTime)
        let t = dt*(frame%fsweap)
        let data = Int16(peak*sin( p*(pow(k,t)-1)))
        return data
    }
  • 下面是 20Hz - 4000HZ的波形图

posted @ 2018-08-21 16:02  _Roy  阅读(1116)  评论(0编辑  收藏  举报