音频扫频振动算法
-
扫频振动是指用一个连续变化但不间断的频率进行振动的测试方法。
-
一般会设定两或三个值(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的波形图
欢迎一起来研究,QQ 253807688