| | Input: PhaseSig, ▷ instantaneous phase signal |
| | BestBreakpointsAmount, ▷appropriate percentage of breakpoints |
| | Errormin, Errormax, ▷minimum and maximum error values tolerated between lines and the signal |
| | EEG_Length ▷number of samples in the input EEG signal |
| | Output: BestThreshold ▷ appropriate threshold value |
| | If BestBreakpointsAmount ≥ 100 then: |
| | BestThreshold⟵ Errormin |
| | return BestThreshold |
| | Else |
| | (VectErrors, NbBreakpoints, …) ⟵ PLS(PhaseSig, Errormin) |
| | ▷PLS(signal, threshold): segment the signal using PLR with respect to the |
| | threshold value |
| | ▷VectErrors: vector of error values sorted in increasing order |
| | ▷NbBreakpoints: number of breakpoints |
| | |
| | (Errormax closest value to Errormax from VectErrors |
| | ((VectErrors, NbBreakpoints, …) ⟵ PLS(PhaseSig, Errormax) |
| | ( |
| | (If BestBreakpointsAmount ≤ ActualBreakpointsAmount then: |
| | (BestThreshold ⟵ Errormax |
| | return BestThreshold |
| | Else |
| | |
| | |
| | While BestThreshold has not been assigned a value do: |
| | |
| | (VectErrors, NbBreakpoints, …) ⟵ PLS(PhaseSig, StepError) |
| | Recalculate ActualBreakpointsAmount |
| | If BestBreakpointsAmount > ActualBreakpointsAmount then: |
| | While BestThreshold has not been assigned a value do: |
| | (VectErrors, NbBreakpoints, …) ⟵ PLS(PhaseSig, ThStep) |
| | Recalculate ActualBreakpointsAmount |
| | If BestBreakpointsAmount > ActualBreakpointsAmount then: |
| | BestThreshold ⟵ threshold that gives the closet ActualBreakpointsAmount to BestBreakpointsAmount |
| | return BestThreshold |
| | End if |
| | Recalculate THStep |
| | End while |
| | End if |
| | End while |
| | End if |
| | End if |