我是 swift 新手,正在从事一个我必须可视化音频波的项目!我正在使用 EZAudio pod 在屏幕上绘制波的位置使用函数 UpdatePlot 并在参数中传递 UnsafeMutablePoiter> 我希望每个 UnUnsafeMutablePointer 中的最大值找到图中的最高波长
buffer[0]//with a bufferSize UInt32
我想在该缓冲区 [0] 数组中找到最大值!
请帮忙!!!ps:提前谢谢
我是 swift 新手,正在从事一个我必须可视化音频波的项目!我正在使用 EZAudio pod 在屏幕上绘制波的位置使用函数 UpdatePlot 并在参数中传递 UnsafeMutablePoiter> 我希望每个 UnUnsafeMutablePointer 中的最大值找到图中的最高波长
buffer[0]//with a bufferSize UInt32
我想在该缓冲区 [0] 数组中找到最大值!
请帮忙!!!ps:提前谢谢
这两行非常令人困惑:
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()
}
对于数组缓冲区 []
斯威夫特 3:
buffer.max()
斯威夫特 2:
buffer.maxElement()