1

我有这样创建的浮点数组

var myArray : [Float] = []

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

我需要做一个

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

但是这个 APIanArray需要UnsafePointer<DSPComplex>

我如何转换myArray为这种格式?

4

2 回答 2

1

如果打算DSPSplitComplex从给定的实部和零虚部填充 a 那么您不需要先创建交错复数数组然后调用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)
于 2019-02-11T21:00:25.023 回答
0

普通数组可以作为 UnsafePointer 传递

所以这个片段应该可以工作,

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

把这个传给arr。

于 2019-02-11T20:56:10.957 回答