Ios 如何交错实数和复数数组以使用vDSP_ctoz?

Ios 如何交错实数和复数数组以使用vDSP_ctoz?,ios,swift,Ios,Swift,swift语法在过去几年中发生了变化,这段代码已经不再有效了 var zerosR = [Float](count: windowSizeOverTwo, repeatedValue: 0.0) var zerosI = [Float](count: windowSizeOverTwo, repeatedValue: 0.0) var cplxData = DSPSplitComplex( realp: &zerosR, imagp: &zerosI ) let xAsComp

swift语法在过去几年中发生了变化,这段代码已经不再有效了

var zerosR = [Float](count: windowSizeOverTwo, repeatedValue: 0.0)
var zerosI = [Float](count: windowSizeOverTwo, repeatedValue: 0.0)
var cplxData = DSPSplitComplex( realp: &zerosR, imagp: &zerosI )

let xAsComplex = UnsafePointer<DSPComplex>( inputSignal.withUnsafeBufferPointer { $0.baseAddress } )
vDSP_ctoz( xAsComplex, 2, &cplxData, 1, vDSP_Length(windowSizeOverTwo) )

vDSP_fft_zrip( setup, &cplxData, 1, log2n, FFTDirection(kFFTDirection_Forward) )
var zerosR=[Float](计数:windowSizeOverTwo,repeatedValue:0.0)
var zerosI=[Float](计数:windowSizeOverTwo,repeatedValue:0.0)
var cplxData=DSPSplitComplex(realp:&zerosR,imagp:&zerosI)
设xAsComplex=UnsafePointer(inputSignal.withUnsafeBufferPointer{$0.baseAddress})
vDSP_ctoz(示例复杂,2和cplxData,1,vDSP_长度(windowSizeOverTwo))
vDSP_fft_zrip(设置和cplxData,1,log2n,fft方向(KFFT方向_前进))
此代码的每一行都显示Swift 4下的错误

除了这一行,我能转换所有的东西

let xAsComplex = UnsafePointer<DSPComplex>( inputSignal.withUnsafeBufferPointer { $0.baseAddress } )
让xAsComplex=UnsafePointer(inputSignal.withUnsafeBufferPointer{$0.baseAddress})
不使用此错误编译的

无法将“UnsafePointer”类型的值转换为预期值 参数类型“UnsafePointer”


指向
inputSignal
数组中
Float
元素存储的指针必须反弹,以指向
DSPComplex
值的数组:

let inputSignal: [Float] = ...

inputSignal.withUnsafeBufferPointer {
    floatPtr in
    floatPtr.withMemoryRebound(to: DSPComplex.self) {
        cmplxPtr in
        vDSP_ctoz(cmplxPtr.baseAddress!, 2, &cplxData, 1, vDSP_Length(windowSizeOverTwo) )
    }
}
有关更多信息,请参见

请注意,这些指针仅在闭包执行期间有效,不能传递到外部。你在这里做了什么

let xAsComplex = UnsafePointer<DSPComplex>( inputSignal.withUnsafeBufferPointer { $0.baseAddress } )
让xAsComplex=UnsafePointer(inputSignal.withUnsafeBufferPointer{$0.baseAddress})

实际上依赖于未定义的行为。

什么是
inputSignal
inputSignal
是一个浮点数组