gpt4 book ai didi

swift - vDSP_meanD 中的奇怪值

转载 作者:行者123 更新时间:2023-11-30 13:44:21 25 4
gpt4 key购买 nike

我正在使用 vDSP_meanD 函数来确定数据集的平均值(与数组的连续差异)

我使用的代码如下

func F(dataAllFrames:[Double],std:Double,medida:String)->Double{
let nframes=dataAllFrames.count
var diferencas_consecutivas_media = [Double](count: dataAllFrames.count-1, repeatedValue:0.0)
var mediaDifConseq:Double = 0

for(var i:Int=1; i<dataAllFrames.count; i++){
diferencas_consecutivas_media[i-1]=dataAllFrames[i]-dataAllFrames[i-1]
}

var meanConseqDif = [Double](count: 1, repeatedValue:0.0)
var meanConseqDifPtr = UnsafeMutablePointer<Double>(meanConseqDif)

vDSP_meanvD(diferencas_consecutivas_media,1,meanConseqDifPtr,UInt(nframes))

print( meanConseqDif[0])
}

函数F在线程 block 内调用

let group = dispatch_group_create()
let queue = dispatch_queue_create("myqueue.data.processor", DISPATCH_QUEUE_CONCURRENT)
dispatch_group_async(group, queue) {
F(measureData,std: std, medida: medida)
}

F 函数在具有不同变量实例的多个调度 block 中被调用,然后我从 vDSP_meanD 返回的值得到不同的值是否有任何上下文可能发生这种情况?线程调用可能对此有一些影响吗?任何“灯”将不胜感激

最佳答案

我不希望这段代码能够工作。这不应该是正确的:

var meanConseqDif = [Double](count: 1, repeatedValue:0.0)
var meanConseqDifPtr = UnsafeMutablePointer<Double>(meanConseqDif)

vDSP_meanvD(diferencas_consecutivas_media,1,meanConseqDifPtr,UInt(nframes))

我相信这直接指向数组结构,因此您可能会删除元数据而不是更新您想要的值。但我希望在这种情况下你根本得不到正确的答案。您是否验证过您的结果通常是正确的?

我认为你所说的代码是这样的:

func F(dataAllFrames: [Double], std: Double, medida: String) -> Double {
let nframes = UInt(dataAllFrames.count)
var diferencas_consecutivas_media = [Double](count: dataAllFrames.count-1, repeatedValue:0.0)

for(var i = 1; i < dataAllFrames.count; i += 1) {
diferencas_consecutivas_media[i-1] = dataAllFrames[i] - dataAllFrames[i-1]
}

var mediaDifConseq = 0.0
vDSP_meanvD(diferencas_consecutivas_media, 1, &mediaDifConseq, nframes)

return mediaDifConseq
}

您不需要输出数组来收集单个结果。您可以直接使用 Double,并使用 & 获取指向它的不安全指针。

不相关的点,但您可以使用单个 zip 和 map 摆脱所有差异生成代码:

let diferencasConsecutivasMedia = zip(dataAllFrames, dataAllFrames.dropFirst())
.map { $1 - $0 }

不过,我还没有介绍这两种方法。您的方法可能更快。我发现邮政编码和 map 更清晰且不易出错,但其他人可能有不同的感觉。

关于swift - vDSP_meanD 中的奇怪值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com