fix Swift type-check complexity in LSV crossover detection
This commit is contained in:
parent
491befa8c6
commit
95997e4fd5
|
|
@ -79,9 +79,13 @@ func detectLsvPeaks(_ points: [LsvPoint]) -> [LsvPeak] {
|
||||||
for i in 1..<smoothed.count {
|
for i in 1..<smoothed.count {
|
||||||
let prev = smoothed[i - 1]
|
let prev = smoothed[i - 1]
|
||||||
let curr = smoothed[i]
|
let curr = smoothed[i]
|
||||||
if prev.sign != curr.sign && prev != 0 {
|
let crossed = (prev > 0 && curr < 0) || (prev < 0 && curr > 0)
|
||||||
let frac = abs(prev) / (abs(prev) + abs(curr))
|
if crossed {
|
||||||
let vCross = vVals[i - 1] + frac * (vVals[i] - vVals[i - 1])
|
let aPrev = abs(prev)
|
||||||
|
let aCurr = abs(curr)
|
||||||
|
let frac = aPrev / (aPrev + aCurr)
|
||||||
|
let dv = vVals[i] - vVals[i - 1]
|
||||||
|
let vCross = vVals[i - 1] + frac * dv
|
||||||
peaks.append(LsvPeak(vMv: vCross, iUa: 0, kind: .crossover))
|
peaks.append(LsvPeak(vMv: vCross, iUa: 0, kind: .crossover))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue