swift - 如何使用 OpaquePointer 调用 DSP 函数?

标签 swift swift3 accelerate-framework

来自向量标量线性代数函数(来自 vectorOps.h) https://developer.apple.com/reference/accelerate/1546030-visamax

func vIsamax(_ count: Int32, _ x: OpaquePointer) -> Int32)

计数 向量 x 中的元素数;必须是 4 的倍数。

x 浮点值向量数组。

我尝试过来自 https://swift.org/migration-guide/se-0107-migrate.html UnsafeRawPointerwithUnsafePointerMemoryLayout 等 目前还没有成功

无法使用 ... CFData 调用类型 'OpaquePointer' 的初始值设定项,

不能调用“”... yada, yada, yada

如何使用 OpaquePointer 调用 DSP 函数?

最佳答案

vIsamaxvFloat aka float4 元素的向量作为参数。 (每个 float4 包含 4 个 float 。) C声明是

int32_t vIsamax(int32_t count, const vFloat *x);

哪些应该映射到 Swift 作为

public func vIsamax(_ count: Int32, _ x: UnsafePointer<vFloat>) -> Int32

代替

public func vIsamax(_ count: Int32, _ x: OpaquePointer) -> Int32

但是你可以简单地传递一个vFloat/float4数组,如下所示 小例子:

import Swift
import Accelerate
import simd

let values = [ float4(-1.0, -2.0, -3.0, -4.0), float4(4.0, 3.0, 2.0, 1.0) ]
let idx = vIsamax(Int32(4 * values.count), values)
print(idx) // 3

关于swift - 如何使用 OpaquePointer 调用 DSP 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40707460/

相关文章:

swift - 如何使用 Generic 作为参数并在不强制转换的情况下返回特定对象?

ios - Swift/交付方法名称到 IBAction 以创建依赖项

ios - 允许数据在所有 Swift3 文件中持久存在

objective-c - 如何使用 Accelerate Framework 将 iOS 相机图像转换为灰度图像?

c++ - 在 OSX Yosemite 上使用 Accelerate Framework 进行编译

iphone - iPhone 上的 FFT 可忽略背景噪音并找到更低的音调

ios - 当远程通知被点击时,弹出并关闭 viewControllers 直到 root

swift - 函数返回空值

ios - 如何检查 iPhone 之前是否安装过我的应用程序?

swift - swift 3 中的可选值优化方式