我需要在多个信号上运行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? (我为每次计算添加了一个附加到另一个样本的数组)。
希望你能提供帮助,
最佳,
Feras A.