diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 472f457042..94457c4754 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -2088,19 +2088,20 @@ Function/WAVE PSQ_DS_GatherOvershootCorrection(WAVE apfreqParam, WAVE DAScalesPa for(i = 0; i < numIterations; i += 1) y = apfreq[i] yp = apfreq[i + 1] + x = DAScales[i] + xp = DAScales[i + 1] frac = yp / y - 1 - if(frac > (maxFrequencyChangePercent * PERCENT_TO_ONE) && abs(yp - y) > AbsFrequencyDistance) - x = DAScales[i] - xp = DAScales[i + 1] + if(frac > (maxFrequencyChangePercent * PERCENT_TO_ONE) \ + && abs(yp - y) > ABS_FREQUENCY_MIN_DISTANCE) xm = (xp + x) / 2 + // only add it if we haven't measured it already if(WaveExists(futureDAScalesHistoric) && !IsNaN(GetRowIndex(futureDAScalesHistoric, val = xm))) continue endif - // only add it if we haven't measured it already EnsureLargeEnoughWave(results, indexShouldExist = idx) ASSERT(yp > y, "Incorrect data ordering") @@ -2143,15 +2144,16 @@ Function PSQ_DS_CalculateDAScale(variable a, variable m, variable x, variable y, sprintf msg, "result %g with a=%g, m=%g, y=%g, c=%g\r", xp, a, m, y, c DEBUGPRINT(msg) - ASSERT(IsFinite(xp), "Invalid calculated DaScale value") + ASSERT(ABS_FREQUENCY_MIN_DISTANCE < ABS_DASCALE_MAX_DISTANCE, "Invalid constant ordering") - if(abs(y - yp) < AbsFrequencyDistance) - xp = x + AbsDAScaleDistance -// else -// xp = ((y + AbsFrequencyDistance) - a) / (m) -// endif + if(CheckIfSmall(m) || abs(x - xp) > ABS_DASCALE_MAX_DISTANCE) + xp = x + ABS_DASCALE_MAX_DISTANCE + elseif(abs(y - yp) < ABS_FREQUENCY_MIN_DISTANCE) + xp = x + ABS_DASCALE_MIN_DISTANCE endif + ASSERT(IsFinite(xp), "Invalid calculated DaScale value") + return xp End