Дискретное преобразование Фурье в Swift с использованием ускорения
Я пытаюсь реализовать Accelerate DFT в Swift в надежде, что это будет иметь дело с произвольными размерами выборки, а не только с 2^n размерами выборки.
Я пытаюсь передать значения этой функции: vDSP_DFT_ExecuteD(...). Мой код вставлен ниже, и я получаю ошибку: выполнение было прервано, причина: EXC_BAD_INSTRUCTION (код =EXC_I386_INVOP, субкод =0x0).
import Accelerate
var x = [Double]() // Input Real Part
var y = [Double]() // Input Imag Part
var xo = [Double]() // Output Real Part
var yo = [Double]() // Output Imag Part
x = [1,2,3,4,5]
y = [0,0,0,0,0]
var splitComplex = DSPDoubleSplitComplex(realp: &x, imagp: &y)
let length = vDSP_Length(x.count)
let weights = vDSP_DFT_zop_CreateSetupD(nil, length, vDSP_DFT_Direction.FORWARD)
vDSP_DFT_ExecuteD(weights!, x, y, &xo, &yo)
print(xo) // Print Real Output
print(yo) // Print Imag Output