代码之家  ›  专栏  ›  技术社区  ›  Duck

将浮点数组转换为unsafepointer数组<dspcomplex>

  •  1
  • Duck  · 技术社区  · 6 年前

    我有这样创建的浮点数组

    var myArray : [Float] = []
    

    这个数组有256个元素,实际部分。所有虚部都为零。

    我需要做一个

    vDSP_ctoz(anArray, 2, &output, 1, vDSP_Length(n/2))
    

    但是这个API需要 anArray 成为 UnsafePointer<DSPComplex>

    我如何转换 myArray 这种格式?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Said Alır    6 年前

    普通数组可以作为unsafepointer传递

    所以这段代码应该有效,

    var myArr = [Float]()
    var arr = [DSPComplex]()
    for number in myArr {
         var dsp = DSPComplex(real: number, imag: 0)
         arr.append(dsp) 
    } 
    

    把这个传过来。

        2
  •  0
  •   Martin R    6 年前

    如果打算填写 DSPSplitComplex 从给定的实部和零虚部开始,不需要先创建一个交错复数数组,然后调用 vDSP_ctoz() . 您可以分配内存并直接从 Float 数组:

    let realParts : [Float] = [1, 2, 3, 4]
    let len = realParts.count
    
    let realp = UnsafeMutablePointer<Float>.allocate(capacity: len)
    realp.initialize(from: realParts, count: len)
    let imagp = UnsafeMutablePointer<Float>.allocate(capacity: len)
    imagp.initialize(repeating: 0.0, count: len)
    
    let splitComplex = DSPSplitComplex(realp: realp, imagp: imagp)
    
    推荐文章