úÎ!ŲBÐĀm      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl None.SUVX_memd>Treats every item in a "plateu" as a local minimum or maximum.mNone4>MX_nemdSimilar to Conduiti: Type of input streamo: Type of output streamu: Type of the resultA of the upstream pipe (Outputted when upstream pipe finishes)m: Underlying monada': Result type (Outputted when finished)Some specializations: A pipe is a producer if i is ()4: it doesn't need anything to go pump out items.If a pipe is producer and a is o/, it means that it will produce infinitely. A pipe is a consumer if o is o3: it will never yield anything else downstream.-Normally you can ask for input upstream with p, which returns q4 if the pipe upstream stops producing. However, if u is oF, it means that the pipe upstream will never stop, so you can use r to get a guaranteed answer.semdtF = distribute input to all, and return the first result that finishesu = never finishvemdw> = distribute input to all, and return result when they finishx = immediately finishyz{n|pr}~€‚ƒ„…†‡ˆ‰~2None .HUVXk†Šemd :https://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm Will return q8 if the matrix is not invertible. This will happen if: +The first item in the main diagonal is zeroœThere is any i such that b_{i + 1} = a_i * c_i. That is, an item in the main diagonal is equal to the product of the off-diagonal elements a row above itAnother mystery condition!Šemda: Bottom diagonal of Memdb: Main diagonal of Memdc: Upper diagonal of Memdyemdx such that M x = yŠ(c) Justin Le 2019BSD3 justin@jle.im experimental non-portableNone "#&'.07UVXk* emd1D Cubic spline‹emdaŒemdbemdy_{i-1}Žemdy_iemd x_i - x_{i-1}emdEnd condition for splineemdc"Not-a-knot" condition: third derivatives are continuous at endpoints. Default for matlab spline.emd@"Natural" condition: curve becomes a straight line at endpoints.emdH"Clamped" condition: Slope of curves at endpoints are explicitly given.emd!Sample a spline at a given point.emdaBuild a cubic spline based on control points using given end conditions (not-a-knot, or natural) 2https://en.wikipedia.org/wiki/Spline_interpolationemdemd(x, y)emdderivative at left endemdderivative at right endNone76” emdA sift stopping condition.It is a ‘‡ consumer that takes single sift step results upstream and terminates with '()' as soon as it is satisfied with the latest sift step.Use combinators like siftOr and siftAnd1 to combine sifters, and the various sifters in Numeric.EMD.SiftL to create sifters from commonly established ones or new ones from scratch.emd Monad where  ? actions live. The reader parameter is the "original vector".emdResult of a single siftemd Boundary conditions for splines.emd4Clamp envelope at end points (Matlab implementation)emdExtend boundaries symmetricallyemdOptions for EMD composition.emdstop condition for siftingemd#end conditions for envelope splinesemdprocess for handling boundary’emd (c) Justin Le 2019BSD3 justin@jle.im experimental non-portableNone"#&'-.HSUVX_k^úemdVThe result of a sifting operation. Each sift either yields a residual, or a new IMF. emdnumber of sifting iterations!emdDefault   defaultSifter = ( 0.3 + # 50 R package uses # 20, Matlab uses no limit"emdŽCheng, Yu, Yang suggest pairing together an energy difference threshold with a threshold for mean envelope RMS. This is a convenience function to construct that pairing.#emd?Create a sifter that stops after a given fixed number of sifts.Useful to use alongside +1 to set an "upper limit" on the number of sifts.$emd3Create a sifter that stops when some projection on $ is smaller than a given threshold.%emdNCreate a sifter that stops based on some predicate on the initial vector and  being “.&emdDCreate a sifter that stops when some projection on two consecutive $s is smaller than a given threshold.'emdGCreate a sifter that stops based on some predicate on two consecutive s being “.(emdISift based on the "standard deviation test", outlined in original paper.)emdLGeneral class of "cauchy-like" sifters: Given a projection function from a `, stop as soon as successive projections become smaller than a given threshold, propertionally.Given f(x_t) , stop when:; \frac{(f(x_t) - f(x_{t-1}))^2}{f^2(x_{t-1})} < \delta *emd?Sift based on the "S-parameter" condition: Stop after a streak n> of almost-same numbers of zero crossings and turning points.+emdJCombine two sifters in "or" fashion: The final sifter will complete when either sifter completes.,emdKCombine two sifters in "and" fashion: The final sifter will complete when both sifters complete.-emdOProject the root mean square of the mean of the maximum and minimum envelopes..emd Project the  square root of the "Energy difference"./emd$Given a "projection function" (like - or .@), re-scale the result based on the RMS of the original signal.0emd$Get the root mean square of a vector1emdFIterated sifting process, used to produce either an IMF or a residual.”emd Single sift2emd@Returns cubic splines of local minimums and maximums. Returns qJ if there are not enough local minimum or maximums to create the splines.•emd7Build a splined vector against a map of control points.3emd"emdThreshold for Energy DifferenceemdThreshold for mean envelope RMS$emd projectionemd threshold(emdminimal threshold)emdProjection functionemd Threshold \delta*emdStreak n to stop on•emd extensions  !"#$%&'()*+,-./012  !(#"*,+-./)&$'%120+2,3(c) Justin Le 2019BSD3 justin@jle.im experimental non-portableNone"#&'-.7HSUVX_kqí 4emdAn 4 v n a; is an Empirical Mode Decomposition of a time series with n items of type a stored in a vector v.The component-wise sum of 6 and 70 should yield exactly the original series (see <).8emdDefault *Note: If you immediately use this and set , then v% will be ambiguous. Explicitly set v& with type applications to appease GHC 88 @(Data.Vector.Vector) { eoSifter = scTimes 100 } 9emdNEMD decomposition of a given time series with a given sifting stop condition.$Takes a sized vector to ensure that: The resulting 4D contains IMFs that are all the same length as the input vector,We provide a vector of size of at least one.:emd9n, but tracing results to stdout as IMFs are found. Useful for debugging to see how long each step is taking.;emd9$ with a callback for each found IMF.<emd Collapse an 4C back into its original time series. Should be a left-inverse to 9: using < on the result of 9' should give back the original vector.=emd>emd?emd  !12456789:;<9:;<45678 !1 2 None>s –—(c) Justin Le 2019BSD3 justin@jle.im experimental non-portableNone"#%.7>HUVX`kÏtDemdA Hilbert-Huang Transform. An D v n a% is a Hilbert-Huang transform of an n#-item time series of items of type a represented using vector v. Create using M or N.Femd(Skeleton lines corresponding to each IMFG emdResidual from EMDHemd?A Hilbert Trasnform of a given IMF, given as a "skeleton line".Jemd#IMF HHT Magnitude as a time series.+It may be useful to "zip" this vector with K$. To do this, use a function like ˜ or ™8 to make these two vectors contain the same length, or 'weaken'/'shift' to make indices in K usable as indices in J.:Prior to v0.1.9.0, this was a length-n vector, just like K!. To get the same behavior, use ˜ on this new field's value.KemdCIMF HHT instantaneous frequency as a time series (between 0 and 1).MIn reality, these frequencies are the frequencies "in between" each step in J.L emd3Initial phase of skeleton line (between -pi and pi)MemdfDirectly compute the Hilbert-Huang transform of a given time series. Essentially is a composition of N and 9. See N for a more flexible version.NemdOCompute the Hilbert-Huang transform from a given Empirical Mode Decomposition.O emdIInvert a Hilbert-Huang transform back to an Empirical Mode DecompositionP emdEConstruct a time series correpsonding to its hilbert-huang transform.QemdmFold and collapse a Hilbert-Huang transform along the frequency axis at each step in time along some monoid.RemdÅCompute the full Hilbert-Huang Transform spectrum. At each timestep is a sparse map of frequency components and their respective magnitudes. Frequencies not in the map are considered to be zero.aTakes a "binning" function to allow you to specify how specific you want your frequencies to be.See S for a sparser version, and T for a denser version.SemdA sparser vesion of RB. Compute the full Hilbert-Huang Transform spectrum. Returns a sparse7 matrix representing the power at each time step (the š n) and frequency (the k).aTakes a "binning" function to allow you to specify how specific you want your frequencies to be.TemdA denser version of R§. Compute the full Hilbert-Huang Transform spectrum, returning a dense matrix (as a vector of vectors) representing the power at each time step and each frequency.;Takes a "binning" function that maps a frequency to one of m7 discrete slots, for accumulation in the dense matrix.UemdžCompute the marginal spectrum given a Hilbert-Huang Transform. It provides the "total power" over the entire time series for each frequency component. See Vˆ for a version that averages over the length of the time series, making it more close in nature to the purpose of a Fourier Transform.eA binning function is accepted to allow you to specify how specific you want your frequencies to be.VemdņCompute the mean marginal spectrum given a Hilbert-Huang Transform. It is similar to a Fourier Transform; it provides the "total power" over the entire time series for each frequency component, averaged over the length of the time series.eA binning function is accepted to allow you to specify how specific you want your frequencies to be.WemdšReturns the "expected value" of frequency at each time step, calculated as a weighted average of all contributions at every frequency at that time step.XemdbReturns the dominant frequency (frequency with largest magnitude contribution) at each time step.YemdcCompute the instantaneous energy of the time series at every step via the Hilbert-Huang Transform.Zemd3Degree of stationarity, as a function of frequency.[emd1Given a time series, return a time series of the  magnitude# of the hilbert transform and the  frequencyo of the hilbert transform, in units of revolutions per tick. Is only expected to taken in proper/legal IMFs.ļThe frequency will always be between 0 and 1, since we can't determine anything faster given the discretization, and we exclude negative values as physically unmeaningful for an IMF.\emdThe polar form of ]Q: returns the magnitude and phase of the discrete hilbert transform of a series.ĸFThe computation of magnitude is unique, but computing phase gives us some ambiguity. The interpretation of the hilbert transform for instantaneous frequency is that the original series "spirals" around the complex plane as time progresses, like a helix. So, we impose a constraint on the phase to uniquely determine it:  \phi_{t+1} is the minimal valid phase such that \phi_{t+1} \geq \phi_{t}d. This enforces the phase to be monotonically increasing at the slowest possible detectable rate.]emd§Real part is original series and imaginary part is hilbert transformed series. Creates a "helical" form of the original series that rotates along the complex plane.Note that since 0.1.7.0=, this uses the same algorithm as the matlab implementation 6https://www.mathworks.com/help/signal/ref/hilbert.html^emdŦHilbert transformed series. Essentially the same series, but phase-shifted 90 degrees. Is so-named because it is the "imaginary part" of the proper hilbert transform, ].Note that since 0.1.7.0=, this uses the same algorithm as the matlab implementation 6https://www.mathworks.com/help/signal/ref/hilbert.html_emd`emdaemdbemdQemd4Combining function, taking frequency, then magnitudeemdProjecting functionRemd7binning function. takes rev/tick freq between 0 and 1.Semd7binning function. takes rev/tick freq between 0 and 1.Temd7binning function. takes rev/tick freq between 0 and 1.Uemd7binning function. takes rev/tick freq between 0 and 1.Vemd7binning function. takes rev/tick freq between 0 and 1.Zemd7binning function. takes rev/tick freq between 0 and 1.)!8DEFGHIJKLMNOPQRSTUVWXYZ[\]^)DEFGHIJKLNMOPRSTVUYZWXQ8!]^\[›     !"#$%&'()*+,-./0123456789:;<<=>?@ABCDEFGHIJKKLMNNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwtxyz{t|}t|~t|€t|‚‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™šs›œžŸ  Ą ĒĢĪĨĢĪͧĻĐŠemd-0.2.0.0-inplaceNumeric.EMD.Internal.Spline Numeric.EMDNumeric.EMD.Sift Numeric.HHTNumeric.EMD.Internal.ExtremaNumeric.EMD.Internal.Pipe Numeric.EMD.Internal.TridiagonalNumeric.EMD.InternalNumeric.HHT.Internal.FFTSpline SplineEnd SENotAKnot SENatural SEClamped sampleSpline makeSpline$fBinarySplineEnd$fShowSplineEnd $fEqSplineEnd$fOrdSplineEnd$fGenericSplineEnd$fShowSplineCoefSiftersPipeSM SingleSiftssResultssMinEnvssMaxEnvBoundaryHandlerBHClamp BHSymmetricEMDOptsEOeoSifter eoSplineEndeoBoundaryHandler SiftResult SRResidualSRIMF defaultSiftersiftEnergyDiff siftTimessiftProj siftProj_ siftPairs siftPairs_ siftStdDev siftCauchy siftSCondsiftOrsiftAndenvMean energyDiff normalizeProjrmssift envelopes$fDefaultSifterEMDemdIMFs emdResidual defaultEOemdemdTraceemd'iemd$fDefaultEMDOpts $fBinaryEMD $fNFDataEMD $fShowEMD $fGenericEMD$fEqEMD$fOrdEMDHHThhtLines hhtResidualHHTLinehlMagshlFreqs hlInitPhasehhthhtEmdihhtEmdihhtfoldFreq hhtSpectrumhhtSparseSpectrumhhtDenseSpectrummarginal meanMarginal expectedFreq dominantFreqinstantaneousEnergydegreeOfStationarityhilbertMagFreq hilbertPolarhilbert hilbertIm$fNFDataHHTLine$fBinaryHHTLine $fNFDataHHT $fBinaryHHT$fMonoidSumMap$fSemigroupSumMap $fShowHHTLine $fEqHHTLine $fOrdHHTLine$fGenericHHTLine $fShowHHT$fEqHHT$fOrdHHT $fGenericHHTextremaPipebase Data.VoidVoidawait GHC.MaybeNothing awaitSurely$fAlternativeZipSinkGHC.Base<|>empty$fApplicativeZipSink<*>pureZipSink getZipSink awaitEitherrunPipe.|unfoldPunfoldPForeveriterateP sourceListrepeatM awaitForevermapPmapMPdropPfoldrPsinkListsolveTridiagonal_scAlpha_scBeta _scGamma0 _scGamma1_scDeltaclampedQconduino-0.2.0.0-cc422306fa6f4960131a2f956e432ea5285ecdbcd63564cf2370fa9273da18b5Data.Conduino.Internal$fBinaryBoundaryHandlerghc-prim GHC.TypesTruesift' splineAgainstfftifftUvector-sized-1.4.0.0-e04ce6b83dd2eb19bf90efc18e8e23aa16bd34cd4f7c7c73c2aa963e9f2167b6Data.Vector.Generic.SizedinittailXfinite-typelits-0.1.4.2-7d241a11b2813bf176fcf1f914f3665e4fd52b732c1cda6c1eedd668fda5fc53Data.Finite.InternalFinite