@@ -2613,8 +2613,8 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26132613 variable i , numArgs, col, size, numExp
26142614 variable xAxisPercentage, yAxisPercentage
26152615 string xaxisOffset, yaxisOffset
2616- variable method, level
2617- string timeFreq, normalize, xAxisType
2616+ variable method, level, binWidth , numBins
2617+ string timeFreq, normalize, xAxisType, freqList , currentList , expList , binList
26182618 STRUCT RGBColor s
26192619
26202620 SFH_ASSERT ( BSP_IsSweepBrowser ( exd. graph) , "ivscc_apfrequency only works with sweepbrowser" )
@@ -2623,11 +2623,14 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26232623 SFH_ASSERT ( numArgs <= numArgsMax, "ivscc_apfrequency has " + num2istr ( numArgsMax) + " arguments at most." )
26242624 SFH_ASSERT ( numArgs >= numArgsMin, "ivscc_apfrequency needs at least " + num2istr ( numArgsMin) + " argument(s)." )
26252625
2626- xaxisOffset = SFH_GetArgumentAsText ( exd, opShort, 0, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = { SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2627- yaxisOffset = SFH_GetArgumentAsText ( exd, opShort, 1, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = { SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2628- xAxisPercentage = SFH_GetArgumentAsNumeric ( exd, opShort, 2, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2629- yAxisPercentage = SFH_GetArgumentAsNumeric ( exd, opShort, 3, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2630- [ method, level, timeFreq, normalize, xAxisType] = SFO_GetApFrequencyArguments ( exd, opShort, 4 )
2626+ xaxisOffset = SFH_GetArgumentAsText ( exd, opShort, 0, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = { SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2627+ yaxisOffset = SFH_GetArgumentAsText ( exd, opShort, 1, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = { SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2628+ xAxisPercentage = SFH_GetArgumentAsNumeric ( exd, opShort, 2, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2629+ yAxisPercentage = SFH_GetArgumentAsNumeric ( exd, opShort, 3, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2630+ WAVE /WAVE wTmp = SFH_GetArgumentAsWave ( exd, opShort, 4 )
2631+ WAVE binRange = wTmp[ 0 ]
2632+ binWidth = SFH_GetArgumentAsNumeric ( exd, opShort, 5, checkFunc = IsStrictlyPositiveAndFinite)
2633+ [ method, level, timeFreq, normalize, xAxisType] = SFO_GetApFrequencyArguments ( exd, opShort, 6 )
26312634
26322635 WAVE /T sweepMap = SB_GetSweepMap ( exd. graph)
26332636 col = FindDimlabel ( sweepMap, COLS, "FileName" )
@@ -2638,8 +2641,6 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26382641 numExp = DimSize ( uniqueFiles, ROWS)
26392642 SFH_ASSERT ( numExp > 0, "ivscc_apfrequency: data from at least one experiment has to be loaded" )
26402643
2641- Make / FREE/ T/ N= ( numExp) elems
2642-
26432644 formula = "sel = select(selsweeps(), selstimset(\" *rheo*\" , \" *supra*\" ), selvis(all), selivsccsweepqc(passed))\r "
26442645 for ( i = 0; i < numExp; i += 1 )
26452646 sprintf expr, "selexpAD%d = select(selexp(\" %s\" ), $sel, selchannels(AD0), selrange(E1))" , i , uniqueFiles[ i ]
@@ -2662,16 +2663,21 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26622663 formula = SF_AddExpressionToFormula ( formula, expr)
26632664 endfor
26642665
2665- elems[] = "$freq" + num2istr ( p)
2666- expr = "ivsccavg = avg([" + TextWaveToList ( elems, "," , trailSep = 0 ) + "], group)"
2666+ Make / FREE/ T/ N= ( numExp) freqs, currents, exps
2667+ freqs[] = "$freq" + num2istr ( p)
2668+ freqList = TextWaveToList ( freqs, "," , trailSep = 0 )
2669+ currents[] = "$currentNorm" + num2istr ( p)
2670+ currentList = TextWaveToList ( currents, "," , trailSep = 0 )
2671+ exps[] = "\" " + uniqueFiles[ p] + "\" "
2672+ expList = TextWaveToList ( exps, "," , trailSep = 0 )
2673+
2674+ sprintf expr, "ivsccavg = avg([%s], bins, [%f,%f],%f,[%s])" , freqList, binRange[ 0 ] , binRange[ 1 ] , binWidth, currentList
26672675 formula = SF_AddExpressionToFormula ( formula, expr)
26682676
2669- elems[] = "$currentNorm" + num2istr ( p)
2670- expr = "ivscccurrentavg = avg([" + TextWaveToList ( elems, "," , trailSep = 0 ) + "], group)"
2677+ sprintf expr, "ivscccurrentavg = avg([%s], bins, [%f,%f],%f,[%s])" , currentList, binRange[ 0 ] , binRange[ 1 ] , binWidth, currentList
26712678 formula = SF_AddExpressionToFormula ( formula, expr)
26722679
2673- elems[] = "\" " + uniqueFiles[ p] + "\" "
2674- expr = "ivscc_apfrequency_explist = [" + TextWaveToList ( elems, "," , trailSep = 0 ) + "]"
2680+ sprintf expr, "ivscc_apfrequency_explist = [%s]" , expList
26752681 formula = SF_AddExpressionToFormula ( formula, expr)
26762682
26772683 WAVE /WAVE varStorage = GetSFVarStorage ( exd. graph)
@@ -2720,7 +2726,7 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
27202726 endif
27212727 WAVE /WAVE wvY = SFH_ExecuteFormulaInternal ( exd. graph, formula)
27222728 JWN_SetStringInWaveNote ( wvY[ 0 ] , SF_META_LEGEND_LINE_PREFIX, "ivscc_apfrequency average" )
2723- plotWITH[ i ][ % FORMULAY] = wvY
2729+ plotWITH[ numExp ][ % FORMULAY] = wvY
27242730 SFO_OperationIVSCCApFrequencySetPlotProperties ( plotWITH[ i ][ % FORMULAY] , xAxisPercentage, yAxisPercentage)
27252731
27262732 if ( ! CmpStr ( xaxisOffset, SF_OP_IVSCCAPFREQUENCY_FIRST))
@@ -2732,7 +2738,13 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
27322738 else // SF_OP_IVSCCAPFREQUENCY_NONE
27332739 formula = "merge($ivscccurrentavg)"
27342740 endif
2735- plotWITH[ i ][ % FORMULAX] = SFH_ExecuteFormulaInternal ( exd. graph, formula)
2741+
2742+ numBins = ceil (( binRange[ 1 ] - binRange[ 0 ]) / binWidth)
2743+ Make / FREE/ D/ N= ( numBins) binValues
2744+ binValues[] = binRange[ 0 ] + p * binWidth + binWidth / 2
2745+ binList = NumericWaveToList ( binValues, "," , format = "%f" , trailSep = 0 )
2746+ sprintf formula, "[%s]" , binList
2747+ plotWITH[ numExp][ % FORMULAX] = SFH_ExecuteFormulaInternal ( exd. graph, formula)
27362748
27372749 Duplicate / O varBackup, varStorage
27382750 SFH_AddVariableToStorage ( exd. graph, "ivscc_apfrequency_explist" , wvResult)
0 commit comments