如何將以下指針從Swift 2初始化爲Swift 3?將指針從Swift 2轉換爲Swift 3
var values: [Double]
...
var valuesAsComplex : UnsafeMutablePointer<DSPDoubleComplex>?
values.withUnsafeBufferPointer { (resultPointer: UnsafeBufferPointer<Double>) -> Void in
valuesAsComplex = UnsafeMutablePointer<DSPDoubleComplex>(resultPointer.baseAddress)
}
更新: 感謝您的所有答案。 將@Aderstedt指針永久重新綁定指示工作,但返回結果不會。有任何想法嗎?
// Create result
var result = [Double](repeating: 0.0, count: N/2)
var resultAsComplex : UnsafeMutablePointer<DSPDoubleComplex>?
result.withUnsafeMutableBytes {
resultAsComplex = $0.baseAddress?.bindMemory(to: DSPDoubleComplex.self, capacity: result.count)
}
// Do complex->real inverse FFT.
vDSP_fft_zripD(fftSetup!, &tempSplitComplex, 1, LOG_N, FFTDirection(FFT_INVERSE));
// This leaves result in packed format. Here we unpack it into a real vector.
vDSP_ztocD(&tempSplitComplex, 1, resultAsComplex!, 2, N2);
// Neither the forward nor inverse FFT does any scaling. Here we compensate for that.
var scale : Double = 0.5/Double(N);
vDSP_vsmulD(&result, 1, &scale, &result, 1, vDSP_Length(N));
return result
您能否提供一個*自包含的*示例來說明問題?有了投入,產出和預期產出? –
謝謝@ martin-r !!!我想創建一個使用iOS相機的心率監視器。我正在以30fps的速度讀取後置攝像頭的圖像,並將圖像的平均色調存儲在一個陣列中,爲了去除噪聲,我想使用FFT和Accelerate框架創建一個帶通濾波器。 我在github中分享了我的代碼https://github.com/codifilo/camera-heart-rate/blob/master/CameraHeartRate/FFT.swift#L119 – codifilo
究竟哪些方法無效? - 請注意,尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現**的最短代碼。一個明確的問題陳述對其他讀者沒有用處。另請參閱:如何創建[mcve]。 –