将 Floats 数组转换为 UnsafePointer<DSPComplex> 数组
Converting an array of Floats to an array of UnsafePointer<DSPComplex>
我有这样创建的浮点数组
var myArray : [Float] = []
这个数组有 256 个元素,实部。所有虚部均为零。
我需要做一个
vDSP_ctoz(anArray, 2, &output, 1, vDSP_Length(n/2))
但是这个API要求anArray
是UnsafePointer<DSPComplex>
如何将 myArray
转换为这种格式?
普通数组可以作为 UnsafePointer 传递
所以这段代码应该可以工作,
var myArr = [Float]()
var arr = [DSPComplex]()
for number in myArr {
var dsp = DSPComplex(real: number, imag: 0)
arr.append(dsp)
}
只需将此传递给 arr。
如果打算用给定的实部和零虚部填充 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)
我有这样创建的浮点数组
var myArray : [Float] = []
这个数组有 256 个元素,实部。所有虚部均为零。
我需要做一个
vDSP_ctoz(anArray, 2, &output, 1, vDSP_Length(n/2))
但是这个API要求anArray
是UnsafePointer<DSPComplex>
如何将 myArray
转换为这种格式?
普通数组可以作为 UnsafePointer 传递
所以这段代码应该可以工作,
var myArr = [Float]()
var arr = [DSPComplex]()
for number in myArr {
var dsp = DSPComplex(real: number, imag: 0)
arr.append(dsp)
}
只需将此传递给 arr。
如果打算用给定的实部和零虚部填充 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)