o
    e&                     @   s0   d dl mZ d dlZdgZg dZdddZdS )    )divisionNdemo_signal)ZBlocksBumpsZ	HeaviSineZDopplerZRampZHiSineZLoSineZLinChirpZTwoChirpZ	QuadChirpZMishMashZWernerSorrowsZ	HypChirpsZ	LinChirpsZChirpsZGaborsineoneoverxzPiece-RegularzPiece-PolynomialZRiemannr   c           0   	   C   s  |   dkrtS |dur)|dk s|d dkrtdtd| dd|  d| }ddg}|   } | |v r@|dur@td| |du rO| |vrOtd	| | d
krxg d}g d}d}t||D ]\}}||dt||   d 7 }qb|S | dkrg d}g d}g d}	d}t|||	D ]\}}}
||dt|| |
  d  7 }q|S | dkrdt	dtj
 |  t|d  td|  }|S | dkrt|d|  t	dtj
 d |d   }|S | dkr||dk }|S | dkrt	tj
|d  | }|S | dkrt	tj
|d  | }|S | dkr-t	tj
| |d |  }|S | d krNt	tj
| ||  t	tj
d! | ||   }|S | d"kret	tj
d! | ||d   }|S | d#krt	tj
d! | ||d   }|t	tj
|d  | 7 }|t	tj
| |d$ |  7 }|S | d%krt	tj
| |d |d   }|t	tj
|d  |  }|t	tj
| ||   }g d}g d}g d}t|||D ]\}}}
||dt|| |
  d  7 }q|S | d&krd'| tj
 d( }d)| tj
 d( }td*|d+ d | }t|}t|}t	|d,|  d-|k  |d.k  }t	|d,|  d-|k  |d/k  }ttd0| }|d }t|}td|d t| }dt	tj
 d ||d  tj
   d |d|< |d| ddd1 ||| |< t|}|d| |tt|d2 d |tt|d2  d < || | }|S | d3krd4| tj
 d( }d5| tj
 d( }td|d | }t|d|  d|  }|t||d  t|| ||d     }|S | d6krtd|d | d2 tj
 }t|d | d( }d7| d( }td|d | tj
 }t||d!  }|ddd1 }t| |d | d8 }t|d  d | d( }t|d |d | }t|d9 |d9 | }td|d | }|| td:tj
 | | d(  }|| td;tj
 | | d(  } || | |  }t|}td|d9 d t|d9  }dt	tj
 d ||d9 d  tj
   d |d|d9 < |d|d9  ddd1 |d<| d9 |< || }|S | dkrkd=}t| |d d) | }td|d | }t|d  d8 }td| d d| d | }t|d |d | }d!||  td>|d?  tj
 |  }d!||  td>|d  tj
 |  }|| }|S | dkrd(}tj| d |d td@}dA||dk< ||d  }t	dB| }|d=dC }|S | dDkrt|}tt|dE }!tt|d< }"tt|d) }#tt|d! }$tt|d }%tt|d8 }&dFtd| }td|!d |! }td|  }td|"d |" }td| td }'td|$d |$ }dG}(dHt|d |d   d|(d    })|)d|" |d|"< d|)|"|#  ||"|#< |)|#|$ ||#|$< ||$|% ||$|%< |||%|%|! < |||%d|!  d |%|! d d1< t|%d|!  d!|&  |% d|!  |&  dI ||%d|!  |& |%d|!  d!|&  < |%d|!  d!|&  }*|'||*|*|" < |d)|#  }+||+d dd1 |d)|# |< t|| },|,| }|S | dJkrt|}tt|d) }#tt|d2 }-tt|d8 }&td|#d |# }d8|d! |d  d  }dKd|d!  |  d4 }d2|d!  dL }d?|d  d9|  d? } d8|d  }'t|-d8 })||d|#< ||d|# d |#d d1< ||d|# d!|# < | |d!|# d|# < |'|#dd1 |d|# d)|# < |d)|#  }+||+d dd1 |d)|# |< t|-d2 ||&|&|- < t|&dM |||- ||& |- < t|| },||, }|S | dNkrttt|}.td|.d }/|/|/9 }/t|}dOtd|.d  ||/d < ttj|}|S tdP| t)QuL  Simple 1D wavelet test functions.

    This function can generate a number of common 1D test signals used in
    papers by David Donoho and colleagues (e.g. [1]_) as well as the wavelet
    book by Stéphane Mallat [2]_.

    Parameters
    ----------
    name : {'Blocks', 'Bumps', 'HeaviSine', 'Doppler', ...}
        The type of test signal to generate (`name` is case-insensitive). If
        `name` is set to `'list'`, a list of the available test functions is
        returned.
    n : int or None
        The length of the test signal. This should be provided for all test
        signals except `'Gabor'` and `'sineoneoverx'` which have a fixed
        length.

    Returns
    -------
    f : np.ndarray
        Array of length ``n`` corresponding to the specified test signal type.

    References
    ----------
    .. [1] D.L. Donoho and I.M. Johnstone.  Ideal spatial adaptation by
           wavelet shrinkage. Biometrika, vol. 81, pp. 425–455, 1994.
    .. [2] S. Mallat. A Wavelet Tour of Signal Processing: The Sparse Way.
           Academic Press. 2009.

    Notes
    -----
    This function is a partial reimplementation of the `MakeSignal` function
    from the [Wavelab](https://statweb.stanford.edu/~wavelab/) toolbox. These
    test signals are provided with permission of Dr. Donoho to encourage
    reproducible research.

    listN   r   zn must be an integer >= 1Zgaborr   z/Parameter n must be set to None when name is {}z,Parameter n must be provided when name is {}blocks)皙?gp=
ף?333333?gq=
ףp?g      ?g?g)\(??gRQ?g(\?gQ?)          @333333@gr   r      Zbumps)r   r   r   r   r   @r   r   g@gffffff@r   ){Gzt?r   g~jtx?{Gz?r   gQ?r   r   r   gMb?r   r   Z	heavisineg333333?g
ףp=
?Zdopplerg?g?ZrampgGz?Zhisineg_vO?ZlosinegioT?Zlinchirpg      ?Ztwochirpr   Z	quadchirpZmishmashg      ?ZwernersorrowsZ	hypchirps   i   r   gjt?gMbP?g?r	   g(\?g      ?r   
   Z	linchirpsd      Zchirps         2   i^     i   y              ?   )Zdtyper   g      ?i   zpiece-regular   ir
   i   zpiece-polynomial(   -      Zriemanng      ?z*unknown name: {}.  name must be one of: {})lower_implemented_signals
ValueErrornpZarangeformatzipsignabssinpisqrtZzerosintroundZonesceilcosexpslicefloatZfixr   sumZ
zeros_likerealZfftZifft)0namentZn_hard_codedZt0shsft0hwswposZhgtZwthpalphabetaf1f2menvelopetmpenvbaA1Zixgi1i2jZf3Zf4Zn_12Zn_7Zn_5Zn_3Zn_2Zn_20Zf5fmaZf6kdiffZbiasZn_10Zsqnidx rZ   JD:\Projects\ConvertPro\env\Lib\site-packages\pywt/data/_wavelab_signals.pyr      s  &  ' $   4  .    
  
  
  
4  
   
    
 &  


""
4"

2p
0j
$$
",*U
((K
D

(""(%

"

)r   N)
__future__r   numpyr+   __all__r)   r   rZ   rZ   rZ   r[   <module>   s
   