我需要对多个信号(同一音频信号的时间片)运行 DCT。
我当前的代码如下所示:
var ci = Array(stride(from: Float(0), to: Float(y.count), by: Float(p)))
var c = Array<Float>(repeating:0.0, count:y.count)
for (index,value) in ci.enumerated() {
var i = index
var v = Int(value)
var newArray = Array(y[v...(v+Int(p)-1)])
let DCTSetup = vDSP_DCT_CreateSetup(nil, vDSP_Length(newArray.count), vDSP_DCT_Type.II)
var nac = Array<Float>(repeating:0.0, count:newArray.count)
vDSP_DCT_Execute(DCTSetup!, &newArray, &nac)
//c.append(contentsOf: nac)
c.insert(contentsOf: nac, at: v)
}
//c.removeFirst()
但这需要很长时间。因此,对于 10 秒的音频样本,它需要 60 多秒。
有没有办法快速对多个信号进行 DCT?(我已经为这个计算组成了一个附加到另一个样本的数组)。
希望你能帮忙,
最好的,
费拉斯 A.