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]の作成方法」も参照してください。 –