使forT中的DCT更快

时间:2017-01-16 15:20:46

标签: swift vdsp

我需要在多个信号上运行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.

0 个答案:

没有答案