使用加速框架进行快速指针

时间:2019-03-21 09:32:55

标签: c++ swift pointers accelerate

我正在编写一个使用swift进行恒定Q转换的应用程序。在搜索互联网时,我偶然发现了一个GitHub代表,该代表使用Apple的加速框架(但适用于C ++)实现了常量q转换

我已经阅读并翻译了大部分代码,但是对于指针,它只停留在一个关键部分。

原物显示:

DSPSplitComplex kernel;
kernel.realp = new float[K * m_fftLength];
kernel.imagp = new float[K * m_fftLength];
bzero(kernel.realp, sizeof(float) * K * m_fftLength);
bzero(kernel.imagp, sizeof(float) * K * m_fftLength);

并在以后的功能中具有以下功能:

DSPSplitComplex complexPointer;
complexPointer.realp = &kernel.realp[(k-1) * m_fftLength];
complexPointer.imagp = &kernel.imagp[(k-1) * m_fftLength];

该函数执行FFT并将结果返回给complexPointer。

我相信这个想法是“内核”是一个矩阵,realp或imagp中的每个条目都是从复杂指针函数返回的浮点数的完整数组。 Xcode中没有错误。

但是我对如何将这部分转换为Swift感到困惑。我已完成以下操作:

var real1:[Float] = Array(repeating: 0.0, count: Int(K * m_fftLength))
var imag1:[Float] = Array(repeating: 0.0, count: Int(K * m_fftLength))
var kernel = DSPSplitComplex(realp: UnsafeMutablePointer(mutating:real1), imagp: UnsafeMutablePointer(mutating:imag1))

var complexPointer:DSPSplitComplex
complexPointer.realp = &kernel.realp[Int((k-1) * m_fftLength)]
complexPointer.imagp = &kernel.imagp[Int((k-1) * m_fftLength)]

,我收到错误信息“ extraneous&”。因此,它不喜欢指向内核的指针。没有它,错误“无法将类型'Float'的值分配给类型'UnsafeMutablePointer'

由于我对C ++知之甚少,所以我对从这里去哪里感到困惑

0 个答案:

没有答案