如何使用 OpaquePointer 调用 DSP 函数?
How to call a DSP function with OpaquePointer?
来自向量标量线性代数函数(来自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
UnsafeRawPointer
、withUnsafePointer
、MemoryLayout
等
目前还没有成功
无法使用...调用类型 'OpaquePointer' 的初始值设定项,CFData,
无法调用“”... yada, yada, yada
如何使用 OpaquePointer 调用 DSP 函数?
vIsamax
将 vFloat
aka float4
元素的向量作为参数。
(每个 float4
包含 4 个浮点数。)
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
来自向量标量线性代数函数(来自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
UnsafeRawPointer
、withUnsafePointer
、MemoryLayout
等
目前还没有成功
无法使用...调用类型 'OpaquePointer' 的初始值设定项,CFData,
无法调用“”... yada, yada, yada
如何使用 OpaquePointer 调用 DSP 函数?
vIsamax
将 vFloat
aka float4
元素的向量作为参数。
(每个 float4
包含 4 个浮点数。)
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