0

我需要对多个信号(同一音频信号的时间片)运行 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.

4

0 回答 0