Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何使用不透明指针调用DSP函数?_Swift_Swift3_Accelerate Framework - Fatal编程技术网

Swift 如何使用不透明指针调用DSP函数?

Swift 如何使用不透明指针调用DSP函数?,swift,swift3,accelerate-framework,Swift,Swift3,Accelerate Framework,来自向量标量线性代数函数(来自vectorOps.h) func vIsamax(u计数:Int32, _x:OpaquePointer)->Int32) 计数 向量x中的元素数;必须是4的倍数 x浮点值的向量数组 我已经尝试了来自世界各地的解决方案 unsafeawpointer,带unsafepointer,MemoryLayout等 到目前为止还没有成功 无法使用调用类型“OpaquePointer”的初始值设定项。。。CFData 无法使用。。。雅达,雅达,雅达 如何使用OpaqueP

来自向量标量线性代数函数(来自vectorOps.h)

func vIsamax(u计数:Int32, _x:OpaquePointer)->Int32)

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

x浮点值的向量数组

我已经尝试了来自世界各地的解决方案
unsafeawpointer
带unsafepointer
MemoryLayout
等 到目前为止还没有成功

无法使用调用类型“OpaquePointer”的初始值设定项。。。CFData

无法使用。。。雅达,雅达,雅达

如何使用OpaquePointer调用DSP函数?

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

int32_t vIsamax(int32_t count, const vFloat *x);
应将其映射到Swift as

public func vIsamax(_ count: Int32, _ x: UnsafePointer<vFloat>) -> 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

显示您的代码。我浏览了迁移页面中的15个不同版本。请注意,您确实不应该使用
vIsamax
,它仅用于传统支持。您应该改用
cblas_isamax
vDSP_maxmgvi
(它们速度更快,在iOS等新平台上也可用,但
vIsamax
仅适用于OS X——它们也有更准确的文档,因为它们是积极开发的)。
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