-1

我是 swift 新手,正在从事一个我必须可视化音频波的项目!我正在使用 EZAudio pod 在屏幕上绘制波的位置使用函数 UpdatePlot 并在参数中传递 UnsafeMutablePoiter> 我希望每个 UnUnsafeMutablePointer 中的最大值找到图中的最高波长

buffer[0]//with a bufferSize UInt32

我想在该缓冲区 [0] 数组中找到最大值!

请帮忙!!!ps:提前谢谢

4

2 回答 2

0

这两行非常令人困惑:

buffer[0]//with a bufferSize UInt32

我想在该缓冲区 [0] 数组中找到最大值!

哪个是UnsafeMutablePointer<Float>,buffer本身还是buffer[0]? 是buffer斯威夫特Array吗?

我假设buffer是 type UnsafeMutablePointer<Float>

手动:

func myMax(buf: UnsafePointer<Float>, count: UInt32) -> Float? {
    guard case let bufCount = Int(count) where count > 0 else {return nil}
    var max = -Float.infinity
    for i in 0..<bufCount {
        if buf[i] > max {
            max = buf[i]
        }
    }
    return max
}

像这样使用它:

if let maxValue = myMax(buffer, count: bufferSize) {
    //Use the maximum value
    print(maxValue)
} else {
    //No maximum value when empty
    print("empty")
}

如果你想使用 Swift 库,你可以写成myMax

func myMax(buf: UnsafePointer<Float>, count: UInt32) -> Float? {
    return UnsafeBufferPointer(start: buf, count: Int(count)).maxElement()
}
于 2016-07-24T21:23:40.923 回答
0

对于数组缓冲区 []

斯威夫特 3:

buffer.max()

斯威夫特 2:

buffer.maxElement()
于 2016-07-24T20:43:41.093 回答