taperedMerge(_:_:result:)
Computes the result of a tapered merge between two double-precision vectors.
Declaration
static func taperedMerge<T, U, V>(_ vectorA: T, _ vectorB: U, result: inout V) where T : AccelerateBuffer, U : AccelerateBuffer, V : AccelerateMutableBuffer, T.Element == Double, U.Element == Double, V.Element == DoubleParameters
- vectorA:
The first vector to merge.
- vectorB:
The second vector to merge.
- result:
The destination vector that receives the result.
Discussion
The following code performs a tapered merge between two vectors that represent sine waves at different frequencies:
let count = 1024
let vectorA: [Double] = (0 ..< count).map {
return sin(Float($0) * 0.4)
}
let vectorB: [Double] = (0 ..< count).map {
return sin(Float($0) * 0.025)
}
let tapered = [Double](unsafeUninitializedCapacity: count) {
buffer, initializedCount in
vDSP.taperedMerge(vectorA, vectorB,
result: &buffer)
initializedCount = count
}The following image shows the result of the tapered merge in tapered.
[Image]