a
    BCCf6T                     @   s   d dl Zd dlmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ G dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZG dd dZ G dd dZ!dS )    N)assert_equalassert_array_almost_equalassert_array_equalassert_allcloseassert_assert_almost_equalsuppress_warnings)raises)dlsimdstepdimpulsetf2zpkltidlti
StateSpaceTransferFunctionZerosPolesGain	dfreqrespdbodeBadCoefficientsc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestDLTIc                 C   s  t ddgddgg}t g dg dg}t ddgg}t g dg}d}t t jd	d
ddd d t jf t ddt ddf}t jd	ddd}t g dgj}t d	d	gddgddgddgddgg}	t|||||f||\}
}}t	|| t	|	| t	||
 tdd |d	dgd d f }t ddg}t|||||f||\}
}}t	|| t	|	| t
t|
|jd	  t ddg}t g d}t g d gj}t||df|d d d	f |\}
}t	|| t	||
 t |d d d	f }|d!}t||df||\}
}t	|| t	||
 t dd"g}t d#t d$ d%t d$ g}d}t g d&gj}t|||df|d d d	f |\}
}t	|| t	||
 td'gd'd'g}ttt|| d S )(N?皙?皙ɿg?r   皙        皙?r   333333?r   r   r         ?r   g      @   )num)r"      g{Gz?gMb`       @)gMbPgc#GgD2?gъo?g#Y?ga2U0*S?gMb@?gTƿ?gkHcCG?g'h'?g56Ng9!@gbmӿ)r$            r         ?r   )r   r)   皙?)r   r   g
@gqqg^B{	7@)r"                       ?r&   y             )r   r)   r%   g      @g      @r$   )npasarrayZhstacklinspaceZnewaxisfullarrayTr
   r   r   lenshapereshapesqrtr   assert_raisesAttributeError)selfabcddtuZt_inZ
yout_truthZ
xout_truthtoutyoutxoutZu_sparseZt_sparser#   denZuflatZzdpdksystem rG   [/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/signal/tests/test_dltisys.py
test_dlsim   s`     








"




"$

zTestDLTI.test_dlsimc                 C   s  t ddgddgg}t g dg dg}t ddgg}t g dg}d}t g d	t g d
t g df}t|||||fdd\}}tt|d tdt|D ].}	t||	 jd d t||	  ||	  qdgddgdf}
t g d}t|
dd\}}tt|d t|d  | t	|
d |
d d }t|dd\}}tt|d t|d  | t
dgddg}ttt| d S )Nr   r   r   r   r   r   r    r!   )
r   {Gz?g9v?gMO?gNz1?g0g >㷿gW	N3Ŀg+(ͿgGӿ)
r   g333333gV-g,Ԛga̦ۢgQo&g*~gIطgp,%Բg[W)
r   {Gzg9vgMOgNz1cg0?g >?gW	N3?g+(?gG?
   nr'   r   r)   )r   r)   r   r$   r!   )r-   r.   r   r   r3   ranger4   r   flattenr   r   r7   r8   )r9   r:   r;   r<   r=   r>   Zyout_step_truthr@   rA   itfinZyout_tfstepzpkinrF   rG   rG   rH   
test_dstepf   s2    zTestDLTI.test_dstepc                 C   s  t ddgddgg}t g dg dg}t ddgg}t g dg}d}t g d	t g d
t g df}t|||||fdd\}}tt|d tdt|D ].}	t||	 jd d t||	  ||	  qdgddgdf}
t g d}t|
dd\}}tt|d t|d  | t	|
d |
d d }t|dd\}}tt|d t|d  | t
dgddg}ttt| d S )Nr   r   r   r   r   r   r    r!   )
r   rJ   g~jt?ggr]g{ю~gB"LQ.gE_ngRPɺ1g1%)
r   g?g rh?g<,?gdm?gZՒr0[gS¸xg^TDgg#~g}T`)
r   rK   g~jthgg?gr]?g{ю~?gB"LQ.?gE_n?gRPɺ1?g1%?rL   rM   r'   r   r)   )r   r)   g      r$   rO   )r-   r.   r   r   r3   rP   r4   r   rQ   r   r   r7   r8   )r9   r:   r;   r<   r=   r>   Zyout_imp_truthr@   rA   rR   rS   Zyout_tfimpulserT   rF   rG   rG   rH   test_dimpulse   s2    
zTestDLTI.test_dimpulsec           
      C   s   t dgg}t dgg}t dgg}t dgg}d}t |dd}t||||df|\}}}	t|t t| t|t |df t|	t |df d S )Nr   r"   r$   r-   r1   zerosr5   r
   r   arangefloat)
r9   r:   r;   r<   r=   rN   r?   r@   rA   rB   rG   rG   rH   test_dlsim_trivial   s    zTestDLTI.test_dlsim_trivialc                 C   s   t dgg}t dgg}t dgg}t dgg}d}t |dd}t||||df|dd\}}}	t|t t| dt t| dd}
t||
 t|	|
 d S )Nr!   r   r)   r"   rW   r$   x0rX   )r9   r:   r;   r<   r=   rN   r?   r@   rA   rB   expectedrG   rG   rH   test_dlsim_simple1d   s    
zTestDLTI.test_dlsim_simple1dc                 C   s   d}d}t |dgd|gg}t dgdgg}t ddgddgg}t dgdgg}d}t |dd}t||||df|dd\}	}
}t|	t t| t ||gt t|dd }t|
| t|| d S )	Nr!   g      ?r   r)   r"   rW   r$   r]   rX   )r9   lambda1lambda2r:   r;   r<   r=   rN   r?   r@   rA   rB   r_   rG   rG   rH   test_dlsim_simple2d   s.    


zTestDLTI.test_dlsim_simple2dc                 C   sN  d}d}t |dgd|gg}t ddgddgg}t ddgg}t ddgg}d}t||||df|d\}}	dd|  d|t |   }
dd|  d|t |   }t|	d d d df |
 t|	d d d df | t ddg}t||||df||d	\}}t ||gt d
|d d
d }d|dd d f< |d |df t |d|d d d f | }|d |df t |d|d d d f | }t|d d d df | t|d d d df | dgddgdf}t|dd\}\}t|g d t|j	g dg t|dd\}\}t|g d t|j	g dg d S )Nr!   g      ?r   r)   rL   r$   rM   r   )rN   r^   rW   r+   r   r'   )r   r   r*   )r   r)   g      ?)r   r$   r!   )
r-   r1   r   rZ   r   r   r5   dotr   r2   )r9   ra   rb   r:   r;   r<   r=   rN   tsZysZstp0Zstp1r^   tiyiimpZy0y1rF   tyrG   rG   rH   test_more_step_and_impulse   sB    

00z#TestDLTI.test_more_step_and_impulseN)
__name__
__module____qualname__rI   rU   rV   r\   r`   rc   rl   rG   rG   rG   rH   r      s   U-,r   c                   @   s   e Zd Zdd ZdS )TestDltic                 C   s  d}t dgdg|d}tt|t tt|t  tt|t  t|j| t tg tdgd|d}tt|t	 tt|t  tt|t  t|j| t dgdgdd|d}tt|t
 tt|t  tt|t  t|j| ttt d ttt ddddd d S )Nr   r$   rW   r>   r'   )r   r   
isinstancer   r   r   r>   r-   r1   r   r   r7   
ValueError)r9   r>   srG   rG   rH   test_dlti_instantiation  s$    z TestDlti.test_dlti_instantiationN)rm   rn   ro   ru   rG   rG   rG   rH   rp     s   rp   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestStateSpaceDiscc                 C   s   d}t dddd|d t dgdgdgdg|d t tddgddggtdgdggtddggtdgg|d t dddddd d S )	Nr   r$   rq   r&   r'   r(   r   T)r   r-   r1   r9   r>   rG   rG   rH   test_initialization<  s    &z&TestStateSpaceDisc.test_initializationc                 C   sl   t dddddd}tt| t  tt| t tt| t tt ||u t| |u d S )Nr$   r&   r'   r(   r   rq   )r   r   rr   to_ssto_tfr   to_zpkr   r9   rt   rG   rG   rH   test_conversionE  s    z"TestStateSpaceDisc.test_conversionc                 C   s2   t dddddd}t|jdg t|jdg d S )Nr$   r   rq   r   )r   r   polesrY   r|   rG   rG   rH   test_propertiesP  s    z"TestStateSpaceDisc.test_propertiesNrm   rn   ro   rx   r}   r   rG   rG   rG   rH   rv   ;  s   	rv   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTransferFunctionc                 C   sT   d}t dd|d t dgdg|d t tdgtdg|d t dddd d S Nr   r$   rq   r&   T)r   r-   r1   rw   rG   rG   rH   rx   [  s
    z(TestTransferFunction.test_initializationc                 C   sp   t ddgddgdd}tt| t tt| t  tt| t tt ||u t| |u d S Nr$   r   rW   r   rq   )r   r   rr   ry   r   rz   r{   r   r|   rG   rG   rH   r}   c  s    z$TestTransferFunction.test_conversionc                 C   s6   t ddgddgdd}t|jdg t|jdg d S r   )r   r   r~   rY   r|   rG   rG   rH   r   n  s    z$TestTransferFunction.test_propertiesNr   rG   rG   rG   rH   r   Z  s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestZerosPolesGainc                 C   s\   d}t ddd|d t dgdgd|d t tdgtdgd|d t ddddd d S r   )r   r-   r1   rw   rG   rG   rH   rx   y  s
     z&TestZerosPolesGain.test_initializationc                 C   sj   t ddddd}tt| t tt| t tt| t  tt ||u t| |u d S )Nr$   r&   r'   r   rq   )r   r   rr   ry   r   rz   r   r{   r|   rG   rG   rH   r}     s    z"TestZerosPolesGain.test_conversionN)rm   rn   ro   rx   r}   rG   rG   rG   rH   r   x  s   r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )Test_dfreqrespc                 C   s^   t dddgdd}g d}t||d\}}g d}t|j|dd	 g d
}t|j|dd	 d S )Nr$   r   r   rq   )r   r$   rL   w)gU0*?g;On?gfj+r(   decimal)gClÿg&WgZd;O?)r   r   r   realimag)r9   rF   r   Hexpected_reexpected_imrG   rG   rH   test_manual  s    zTest_dfreqresp.test_manualc                 C   s|   t dddgdd}g d}t||d\}}t|d }t|j|t|j| }|j}t|j| |j	}t|j	| d S )Nr$   r   r   rq   r   r$   rL   d   r   r,   )
r   r   r-   exppolyvalr#   rC   r   r   r   )r9   rF   r   r   jwrk   r   r   rG   rG   rH   	test_auto  s    zTest_dfreqresp.test_autoc                 C   sH   t dddgdd}d}tjdtjddd}t||d	\}}t|| d S )
Nr$   r   r   rq   rL   r   FZendpointrM   )r   r-   r/   pir   r   )r9   rF   rN   
expected_wr   r   rG   rG   rH   test_freq_range  s
    zTest_dfreqresp.test_freq_rangec                 C   sx   t dgddgdd}t <}|jtdd |jtdd t|dd	\}}W d    n1 s\0    Y  t|d
 d d S Nr$   rW   r   rq   zdivide by zero)messagezinvalid value encounteredr&   rM   r   r   )r   r   filterRuntimeWarningr   r   )r9   rF   supr   r   rG   rG   rH   test_pole_one  s    .zTest_dfreqresp.test_pole_onec                 C   s    t dgddg}ttt| d S Nr$   )r   r7   r8   r   r9   rF   rG   rG   rH   
test_error  s    zTest_dfreqresp.test_errorc                 C   s   t dgg d}tg dg dg dg}tg dgj}tg dg}d}t ||||}dtd	dd
 }t :}|t t||d\}	}
t||d\}}W d    n1 s0    Y  t	|
| d S )Nr&   )r$   r+   r   r   )r!   r   r   )r$   r   r   )r   r$   r   )r   r   r&   r   g      $@r!   r   )
r   r-   r1   r2   rZ   r   r   r   r   r   )r9   	system_TFABCDZ	system_SSr   r   w1H1w2H2rG   rG   rH   test_from_state_space  s    

.z$Test_dfreqresp.test_from_state_spacec                 C   sR   t g dgd}t dddg}g d}t||d\}}t||d\}}t|| d S )Nr*   r   r$   r   r   r   )r   r   r   )r9   Z
system_ZPKr   r   r   r   r   r   rG   rG   rH   test_from_zpk  s    zTest_dfreqresp.test_from_zpkN)
rm   rn   ro   r   r   r   r   r   r   r   rG   rG   rG   rH   r     s   
r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )	Test_bodec           	      C   sz   d}t dddg|d}dddtjg}t||d\}}}g d}t||d	d
 g d}t||d	d
 tt|| | d S )Nr   r   r$   r   rq   r!   r   )gD!gvq!g$~;#g0*(r(   r   )gzGgJAg_)Pg     f)r   r-   r   r   r   r   r1   )	r9   r>   rF   r   r   magphaseexpected_magexpected_phaserG   rG   rH   r     s    zTest_bode.test_manualc           
      C   s   t dddgdd}tdddtjg}t||d\}}}t|d }t|j|t|j| }d	t	t
| }t|| tt|}	t||	 d S )
Nr   r$   r   r   rq   r!   r   r,   g      4@)r   r-   r1   r   r   r   r   r#   rC   log10absr   Zrad2degZangle)
r9   rF   r   r   r   r   r   rk   r   r   rG   rG   rH   r     s    
zTest_bode.test_autoc                 C   sR   d}t dddgdd}d}tjdtj|dd	| }t||d
\}}}t|| d S )Nr   r   r$   r   rq   rL   r   Fr   rM   )r   r-   r/   r   r   r   )r9   r>   rF   rN   r   r   r   r   rG   rG   rH   
test_range  s    zTest_bode.test_rangec                 C   sz   t dgddgdd}t >}|jtdd |jtdd t|dd	\}}}W d    n1 s^0    Y  t|d
 d d S r   )r   r   r   r   r   r   )r9   rF   r   r   r   r   rG   rG   rH   r     s    0zTest_bode.test_pole_onec                 C   s$   t dgg ddd}t|dd d S )Nr$   )r$   r   r   r   rq   r&   rM   )r   r   r   rG   rG   rH   test_imaginary$  s    zTest_bode.test_imaginaryc                 C   s    t dgddg}ttt| d S r   )r   r7   r8   r   r   rG   rG   rH   r   *  s    zTest_bode.test_errorN)	rm   rn   ro   r   r   r   r   r   r   rG   rG   rG   rH   r     s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestTransferFunctionZConversionz=Test private conversions between 'z' and 'z**-1' polynomials.c                 C   s\   g d}g d}t ||\}}t|| t|| t ||\}}t|| t|| d S )Nr&   r'   r(   r"         r   Z
_z_to_zinvr   Z
_zinv_to_zr9   r#   rC   Znum2Zden2rG   rG   rH   	test_full3  s    


z)TestTransferFunctionZConversion.test_fullc                 C   sd   ddg}g d}t ||\}}tg d| t|| t ||\}}tg d| t|| d S )Nr&   r'   r   )r   r&   r'   )r&   r'   r   r   r   rG   rG   rH   test_numerator?  s    
z.TestTransferFunctionZConversion.test_numeratorc                 C   sd   g d}ddg}t ||\}}t|| tg d| t ||\}}t|| tg d| d S )Nr   r"   r   )r   r"   r   )r"   r   r   r   r   rG   rG   rH   test_denominatorK  s    

z0TestTransferFunctionZConversion.test_denominatorN)rm   rn   ro   __doc__r   r   r   rG   rG   rG   rH   r   0  s   r   )"numpyr-   Znumpy.testingr   r   r   r   r   r   r   Zpytestr	   r7   Zscipy.signalr
   r   r   r   r   r   r   r   r   r   r   r   r   rp   rv   r   r   r   r   r   rG   rG   rG   rH   <module>   s   $8  [H