0
목록의 가장 가까운 두 점 사이의 보간법을 사용하여 언제든지 값을 계산하려고합니다. Swift에서이 작업을 수행하는 더 좋고/더 쉬운 방법이 있습니까? 코드가 당신이 원하는 않는 경우Swift에서 값 목록의 보간 수
func CalculateDelta(ratio: Double) -> Double {
let ratioArray = [ 1.0, 1.05, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 500 ]
let deltaArray = [ 0.15, 0.15, 0.103, 0.072, 0.053, 0.04, 0.03, 0.023, 0.017, 0.011, 0.006, 0.001, 0 ]
var delta = deltaArray[0]
if (ratio > ratioArray[ratioArray.count - 1]) {
delta = deltaArray[deltaArray.count - 1]
} else {
for var i=0; i<ratioArray.count-1; i++ {
if (ratio > deltaArray[i]) {
delta = deltaArray[i] + (((ratio - ratioArray[i])/(ratioArray[i+1] - ratioArray[i])) * (deltaArray[i+1] - deltaArray[i]));
break;
}
}
}
return delta
}
나는 이해하고 싶다 ...이 코드는 당신이 원하는 출력을 내고 있다고 말하지만, 보다 효율적인 알고리즘? –
코드를 실행할 때 'ratio'가 500보다 크지 않으면 항상 0.15의 결과를 생성하는 것으로 보입니다. –