Дискретное преобразование Фурье в 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

0 ответов

Другие вопросы по тегам