
    tKg.                         d dl Zd dlmZmZmZmZmZ d dlm	Z
 d dlmc mZ d ZddZd Zd Zd Z G d	 d
      Z G d d      Z G d d      Z G d d      Zy)    N)assert_almost_equalassert_equalassert_assert_allcloseassert_array_equal)raisesc                 "    |||z
  | z  |z  z   }|S N tf0f1t1fs        e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/signal/tests/test_waveforms.pychirp_linearr      s    
b2g]RAH    c                 d    |r|||z
  | dz  z  |dz  z  z   }|S |||z
  || z
  dz  z  |dz  z  z
  }|S )N   r   )r   r   r   r   vertex_zeror   s         r   chirp_quadraticr      sW    "r'QT!BE)) H "r'b1fq[(2q500Hr   c                 "    |||z  | |z  z  z  }|S r
   r   r   s        r   chirp_geometricr      s    
beqt_AHr   c                 4    ||z  |z  ||z
  | z  ||z  z   z  }|S r
   r   r   s        r   chirp_hyperbolicr      s*    
2bR"WaK"R%'(AHr   c                     | d   | d   z
  }t        j                  |      dt         j                  z  z  |z  }d| dd | dd z   z  }||fS )zR
    Compute theta'(t)/(2*pi), where theta'(t) is the derivative of theta(t).
       r   r   g      ?N)npdiffpi)r   thetadtr   tfs        r   compute_frequencyr&   #   sW     
1!B
"%% 2%A	aeafn	Bq5Lr   c                   ~    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)	TestChirpc                 P    t        j                  ddddd      }t        |d       y )Nr         ?       @linearr   r   r   r   method	waveformschirpr   selfws     r   test_linear_at_zerozTestChirp.test_linear_at_zero1   s"    OOaCCCIAs#r   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )Nr,   r*   r+   r   d   ư>	r    linspacer0   _chirp_phaser&   maxabsr   r   
r3   r.   r   r   r   r   phaser%   r   abserrs
             r   test_linear_freq_01zTestChirp.test_linear_freq_015   s    KK2s#&&q"b"f=!!U+Aq<BB#??@Ar   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )Nr,         i@      Y@      $@r   r7   r8   r9   r>   s
             r   test_linear_freq_02zTestChirp.test_linear_freq_02@   s    KK2s#&&q"b"f=!!U+Aq<BB#??@Ar   c                 P    t        j                  ddddd      }t        |d       y )Nr   r*   r+   	quadraticr-   r/   r2   s     r   test_quadratic_at_zeroz TestChirp.test_quadratic_at_zeroK   s"    OOaCCCLAs#r   c                 R    t        j                  dddddd      }t        |d       y )Nr   r*   r+   rH   F)r   r   r   r   r.   r   r/   r2   s     r   test_quadratic_at_zero2z!TestChirp.test_quadratic_at_zero2O   s'    OOaCCC(-/As#r   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )NrH   r*   r+   r     r8   	r    r:   r0   r;   r&   r<   r=   r   r   r>   s
             r   test_quadratic_freq_01z TestChirp.test_quadratic_freq_01T   s    KK2t$&&q"b"f=!!U+Aq?2r2r#BBCDr   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )NrH         4@rE   r   rM   r8   rN   r>   s
             r   test_quadratic_freq_02z TestChirp.test_quadratic_freq_02_   s    KK2t$&&q"b"f=!!U+Aq?2r2r#BBCDr   c                 P    t        j                  ddddd      }t        |d       y )Nr   r*   r+   logarithmicr-   r/   r2   s     r   test_logarithmic_at_zeroz"TestChirp.test_logarithmic_at_zeroj   s"    OOaCCCNAs#r   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )NrT   r*   r+   r   '  r8   	r    r:   r0   r;   r&   r<   r=   r   r   r>   s
             r   test_logarithmic_freq_01z"TestChirp.test_logarithmic_freq_01n   s    KK2u%&&q"b"f=!!U+Aq?2r2r#BBCDr   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )NrT   rC   rD   rE   r   rW   r8   rX   r>   s
             r   test_logarithmic_freq_02z"TestChirp.test_logarithmic_freq_02y       KK2u%&&q"b"f=!!U+Aq?2r2r#BBCDr   c                    d}d}d}d}t        j                  d|d      }t        j                  |||||      }t	        ||      \  }}t        j
                  t        j                  |t        ||||      z
              }	t        |	dk         y )NrT   rD   rE   r   rW   r8   rX   r>   s
             r   test_logarithmic_freq_03z"TestChirp.test_logarithmic_freq_03   r\   r   c                 P    t        j                  ddddd      }t        |d       y )Nr   rE   r*   
hyperbolicr-   r/   r2   s     r   test_hyperbolic_at_zeroz!TestChirp.test_hyperbolic_at_zero   s"    OOaDSSNAs#r   c                     d}d}t        j                  d|d      }ddgddgddgddgg}|D ]G  \  }}t        j                  |||||      }t	        ||      \  }}	t        ||||      }
t        |	|
       I y )Nr`   r*   r   rW   rE   g      $      )r    r:   r0   r;   r&   r   r   )r3   r.   r   r   casesr   r   r?   r%   r   expecteds              r   test_hyperbolic_freq_01z!TestChirp.test_hyperbolic_freq_01   s    KK2u%t  FB**1b"b&AE%a/EB'BB7HAx(	 r   c           	          d}d}t        j                  d|d      }t        t        t        j
                  |d|d|       t        t        t        j
                  |d|d|       y )Nr`   r*   r      r   r    r:   assert_raises
ValueErrorr0   r1   )r3   r.   r   r   s       r   test_hyperbolic_zero_freqz#TestChirp.test_hyperbolic_zero_freq   sN    KK2q!j)//1aQGj)//1aQGr   c           	          d}d}d}d}t        j                  d|d      }t        t        t        j
                  |||||       y )NfoorE   rQ   r*   r   
   ri   )r3   r.   r   r   r   r   s         r   test_unknown_methodzTestChirp.test_unknown_method   s@    KK2r"j)//1b"b&Ir   c                     d}d}t        j                  ddd      }d}t        j                  ||||      }d}t        j                  ||||      }d}t	        |||	       y )
NrE   rQ   r   r            @   z'Integer input 't1=3' gives wrong resulterr_msgr    r:   r0   r1   r   )r3   r   r   r   r   float_result
int_resultrv   s           r   test_integer_t1zTestChirp.test_integer_t1   sa    KKAr" q"b"5__QB3
;Zw?r   c                     d}d}t        j                  ddd      }d}t        j                  ||||      }d}t        j                  ||||      }d}t	        |||	       y )
NrQ   rs   r   r   rr   rE   ro   z(Integer input 'f0=10' gives wrong resultru   rw   )r3   r   r   r   r   rx   ry   rv   s           r   test_integer_f0zTestChirp.test_integer_f0   a    KKAr" q"b"5__QB3
<Zw?r   c                     d}d}t        j                  ddd      }d}t        j                  ||||      }d}t        j                  ||||      }d}t	        |||	       y )
NrE   rs   r   r   rr   rQ      z(Integer input 'f1=20' gives wrong resultru   rw   )r3   r   r   r   r   rx   ry   rv   s           r   test_integer_f1zTestChirp.test_integer_f1   r}   r   c                     d}d}d}t        j                  ddd      }t        j                  |t	        |      t	        |      t	        |            }t        j                  ||||      }d}t        |||       y )	Nro   rt   r   r   r   rr   z5Integer input 'f0=10, t1=3, f1=20' gives wrong resultru   )r    r:   r0   r1   floatr   )r3   r   r   r   r   rx   ry   rv   s           r   test_integer_allzTestChirp.test_integer_all   sh    KKAr" q%)U2Yb	J__QB3
IZw?r   N)__name__
__module____qualname__r5   rA   rF   rI   rK   rO   rR   rU   rY   r[   r^   ra   rf   rl   rp   rz   r|   r   r   r   r   r   r(   r(   /   sg    $		$$
		$			$)HJ	@	@	@@r   r(   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSweepPolyc                 ,   t        j                  g d      }t        j                  ddd      }t        j                  ||      }t        ||      \  }} ||      }t        j                  t        j                  ||z
              }t        |dk         y )N)r*           r*   r   rs   rW   r8   	r    poly1dr:   r0   _sweep_poly_phaser&   r<   r=   r   r3   pr   r?   r%   r   re   r@   s           r   test_sweep_poly_quad1z#TestSweepPoly.test_sweep_poly_quad1   st    IIo&KK3&++Aq1!!U+AR5q8|,-r   c                 (   t        j                  d      }t        j                  ddd      }t        j                  ||      }t        ||      \  }} ||      }t        j                  t        j                  ||z
              }t        |dk         y )Nr+   r   rs   rW   r8   r   r   s           r   test_sweep_poly_constz#TestSweepPoly.test_sweep_poly_const   ss    IIcNKK3&++Aq1!!U+AR5q8|,-r   c                 ,   t        j                  ddg      }t        j                  ddd      }t        j                  ||      }t        ||      \  }} ||      }t        j                  t        j                  ||z
              }t        |dk         y )Nrc   rE   r   rs   rW   r8   r   r   s           r   test_sweep_poly_linearz$TestSweepPoly.test_sweep_poly_linear   sx    IItTl#KK3&++Aq1!!U+AR5q8|,-r   c                 ,   t        j                  g d      }t        j                  ddd      }t        j                  ||      }t        ||      \  }} ||      }t        j                  t        j                  ||z
              }t        |dk         y )N)r*   r          r   rs   rW   r8   r   r   s           r   test_sweep_poly_quad2z#TestSweepPoly.test_sweep_poly_quad2   su    II&'KK3&++Aq1!!U+AR5q8|,-r   c                 ,   t        j                  g d      }t        j                  ddd      }t        j                  ||      }t        ||      \  }} ||      }t        j                  t        j                  ||z
              }t        |dk         y )Nr+   r*   r   r   r   r+   rW   r8   r   r   s           r   test_sweep_poly_cubicz#TestSweepPoly.test_sweep_poly_cubic  su    II+,KK3&++Aq1!!U+AR5q8|,-r   c                 R   t        j                  g d      }t        j                  ddd      }t        j                  ||      }t        ||      \  }} t        j                  |      |      }t        j                  t        j                  ||z
              }t        |dk         y)z1Use an array of coefficients instead of a poly1d.r   r   r+   rW   r8   N)
r    arrayr:   r0   r   r&   r   r<   r=   r   r   s           r   test_sweep_poly_cubic2z$TestSweepPoly.test_sweep_poly_cubic2  s    HH*+KK3&++Aq1!!U+A299Q<#q8|,-r   c                 ,   g d}t        j                  ddd      }t        j                  ||      }t	        ||      \  }} t        j
                  |      |      }t        j                  t        j                  ||z
              }t        |dk         y)z/Use a list of coefficients instead of a poly1d.r   r   r+   rW   r8   N)	r    r:   r0   r   r&   r   r<   r=   r   r   s           r   test_sweep_poly_cubic3z$TestSweepPoly.test_sweep_poly_cubic3  sv    !KK3&++Aq1!!U+A299Q<#q8|,-r   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s%    r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestGaussPulsec                     t        j                  dd      }t        j                  dd      }d}t        |||       y )Ncutoffg     @@)fci  z*Integer input 'fc=1000' gives wrong resultru   r0   
gausspulser   r3   rx   ry   rv   s       r   test_integer_fczTestGaussPulse.test_integer_fc$  s7     ++H@))(t<
>Zw?r   c                     t        j                  dd      }t        j                  dd      }d}t        |||       y )Nr   r*   )bwr   z'Integer input 'bw=1' gives wrong resultru   r   r   s       r   test_integer_bwzTestGaussPulse.test_integer_bw*  s7     ++H=))(q9
;Zw?r   c                     t        j                  dd      }t        j                  dd      }d}t        |||       y )Nr   g      )bwriz)Integer input 'bwr=-6' gives wrong resultru   r   r   s       r   test_integer_bwrzTestGaussPulse.test_integer_bwr0  s7     ++H$?))(;
=Zw?r   c                     t        j                  dd      }t        j                  dd      }d}t        |||       y )Nr   g      N)tpriz*Integer input 'tpr=-60' gives wrong resultru   r   r   s       r   test_integer_tprzTestGaussPulse.test_integer_tpr6  s7     ++H%@))(<
>Zw?r   N)r   r   r   r   r   r   r   r   r   r   r   r   "  s    @@@@r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestUnitImpulsec                     t        t        j                  d      g d       t        t        j                  d      g dg dg dg       y )N   )r   r   r   r   r   r   r   rt   rt   )r   r   r   r   r   r   r   r0   unit_impulser3   s    r   test_no_indexzTestUnitImpulse.test_no_index?  s7    911!46KL911&9%y)<	>r   c           
         t        t        j                  dd      g d       t        t        j                  dd      g dg dg dg       t        j                  dd	      }t        |t        j                  g d
g d
g dg d
g             y )Nro   rt   )
r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )   r   r   )r   r   r   r   )r   r   r   r   )r   r0   r   r    r   r3   imps     r   
test_indexzTestUnitImpulse.test_indexD  sv    911"a89	;911&&A%y)<	> $$VQ/3,*6*6*6*8 !9 	:r   c                     t        t        j                  dd      g dg dg dg       t        t        j                  dd      g d       y )Nr   midr   r   	   )	r   r   r   r   r   r   r   r   r   r   r   s    r   test_midzTestUnitImpulse.test_midQ  s=    911&%@%y)<	>911!U;6	8r   c                    t        j                  d      }t        t        j                  |j
                  t        j                               t        j                  ddt              }t        t        j                  |j
                  t        j                               t        j                  ddt              }t        t        j                  |j
                  t        j                               y )Nr   rh   rt   )dtype)rh   r   )rt   r   )r0   r   r   r    
issubdtyper   floatingintintegercomplexcomplexfloatingr   s     r   
test_dtypezTestUnitImpulse.test_dtypeW  s    $$Q'cii56$$Q5cii45$$VV7Ccii););<=r   N)r   r   r   r   r   r   r   r   r   r   r   r   =  s    >
:8>r   r   )T)numpyr    numpy.testingr   r   r   r   r   pytestr   rj   scipy.signal._waveformssignal
_waveformsr0   r   r   r   r   r&   r(   r   r   r   r   r   r   <module>r      sh    I I * + +


	l@ l@^A AH@ @6"> ">r   