
    e!hS                        d dl Zd dlmZ d dlmZ d dlmZm	Z	m
Z
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      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z y)    N)suppress_warnings)raises)assert_array_almost_equalassert_almost_equalxp_assert_closexp_assert_equal)dlsimdstepdimpulsetf2zpkltidlti
StateSpaceTransferFunctionZerosPolesGain	dfreqrespdbodeBadCoefficientsc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestDLTIc                 $   t        j                  ddgddgg      }t        j                  g dg dg      }t        j                  ddgg      }t        j                  g dg      }d}t        j                  t        j                  d	d
d      d d t         j                  f   t        j
                  dd      t        j
                  dd      f      }t        j                  d	dd      }t        j                  g dg      j                  }t        j                  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        j                  ddg      }t        |||||f||      \  }
}}t        ||       t        |	|       t        |
      t        |      k(  sJ t        j                  ddg      }t        j                  g d      }t        j                  g d g      j                  }t        ||df|d d d	f   |      \  }
}t        ||       t        ||
       t        j                  |d d d	f         }|j                  d!      }t        ||df||      \  }
}t        ||       t        ||
       t        j                  dd"g      }t        j                  d#t        j                  d$      z  d%t        j                  d$      z  g      }d}t        j                  g d&g      j                  }t        |||df|d d d	f   |      \  }
}t        ||       t        ||
       t        d'gd'd'g      }t        t        t        ||       y )(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asarrayhstacklinspacenewaxisfullarrayTr	   r   lenreshapesqrtr   assert_raisesAttributeError)selfabcddtut_in
yout_truth
xout_truthtoutyoutxoutu_sparset_sparser$   denuflatzdpdksystems                         g/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/signal/tests/test_dltisys.py
test_dlsimzTestDLTI.test_dlsim   s[   JJc
T3K01JJ(*:;<JJc
|$JJ()* IIr{{1cq1!RZZ-@wwvt,wwvv.0 1 {{1cq) XX  , - . /0a	 	
 ZZ!Q"(&!1")7!3"*I!6"+Z!8	!: ;
 !!Q1b!11d;dD!*d3!*d3!$- 	i aVQY<::sCj) !Q1b!18XFdD!*d3!*d34yCI%%% jj#t%jj)XX  2 3 4 56A	 	 Cc?AadGT:
d!$
3!$- 

1QT7#d#Cc?E48
d!$
3!$- XXsDk"XXsRWWQZ'
):;<XX9:;==
BAs+Qq!tWd;
d!$
3!$- aS1a&!neVQ7    c                    t        j                  ddgddgg      }t        j                  g dg dg      }t        j                  ddgg      }t        j                  g dg      }d}t        j                  g d	      t        j                  g d
      t        j                  g d      f}t        |||||fd      \  }}t        |      dk(  sJ t	        dt        |            D ]9  }	||	   j
                  d   dk(  sJ t        ||	   j                         ||	          ; dgddgdf}
t        j                  g d      }t        |
d      \  }}t        |      dk(  sJ t        |d   j                         |       t        |
d   |
d         dz   }t        |d      \  }}t        |      dk(  sJ t        |d   j                         |       t        dgddg      }t        t        t        |       y )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
   r6   rangeshaper   flattenr   r   r9   r:   )r;   r<   r=   r>   r?   r@   yout_step_truthrE   rF   itfinyout_tfstepzpkinrO   s                 rP   
test_dstepzTestDLTI.test_dstepg   s   JJc
T3K01JJ(*:;<JJc
|$JJ()* :: 'D E :: '7 8 :: 'B C	D Aq!Q+r2
d4yA~~q#d)$ 	MA7==#r)))%d1goo&79KL	M
 Sz3'jj141%
d4yA~~!$q'//"3[AtAwQ(615A&
d4yA~~!$q'//"3[A aS1a&!neV4rR   c                    t        j                  ddgddgg      }t        j                  g dg dg      }t        j                  ddgg      }t        j                  g dg      }d}t        j                  g d	      t        j                  g d
      t        j                  g d      f}t        |||||fd      \  }}t        |      dk(  sJ t	        dt        |            D ]9  }	||	   j
                  d   dk(  sJ t        ||	   j                         ||	          ; dgddgdf}
t        j                  g d      }t        |
d      \  }}t        |      dk(  sJ t        |d   j                         |       t        |
d   |
d         dz   }t        |d      \  }}t        |      dk(  sJ t        |d   j                         |       t        dgddg      }t        t        t        |       y )Nr   r   r   r   r   r    r!   r"   )
r   rT   g~jt?ggr]g{ю~gB"LQ.gE_ngRPɺ1g1%)
r   g?g rh?g<,?gdm?gZՒr0[gS¸xg^TDgg#~g}T`)
r   rU   g~jthgg?gr]?g{ю~?gB"LQ.?gE_n?gRPɺ1?g1%?rV   rW   r(   r   r*   )r   r*   g      r%   rY   )r.   r/   r   r6   rZ   r[   r   r\   r   r   r9   r:   )r;   r<   r=   r>   r?   r@   yout_imp_truthrE   rF   r^   r_   yout_tfimpulsera   rO   s                 rP   test_dimpulsezTestDLTI.test_dimpulse   s   JJc
T3K01JJ(*:;<JJc
|$JJ()* ** &C D ** &D E ** &A BC q!Q2."5
d4yA~~q#d)$ 	LA7==#r)))%d1goo&79JK	L
 Sz3'$45da(
d4yA~~!$q'//"3^DtAwQ(61eq)
d4yA~~!$q'//"3^D aS1a&!nh7rR   c                    t        j                  dgg      }t        j                  dgg      }t        j                  dgg      }t        j                  dgg      }d}t        j                  |      j                  dd      }t	        ||||df|      \  }}}	t        |t        j                  t        |                   t        |t        j                  |df             t        |	t        j                  |df             y )Nr   r#   r%   r.   r4   zerosr7   r	   r   arangefloat)
r;   r<   r=   r>   r?   rX   rA   rE   rF   rG   s
             rP   test_dlsim_trivialzTestDLTI.test_dlsim_trivial   s    HHseWHHseWHHseWHHseWHHQKA& !Q1a!4dDbiia12bhh1v./bhh1v./rR   c                    t        j                  dgg      }t        j                  dgg      }t        j                  dgg      }t        j                  dgg      }d}t        j                  |      j                  dd      }t	        ||||df|d      \  }}}	t        |t        j                  t        |                   dt        j                  t        |            z  j                  dd      }
t        ||
       t        |	|
       y )Nr"   r   r*   r#   rh   r%   x0ri   )r;   r<   r=   r>   r?   rX   rA   rE   rF   rG   expecteds              rP   test_dlsim_simple1dzTestDLTI.test_dlsim_simple1d   s    HHseWHHseWHHseWHHseWHHQKA& !Q1a!:dDbiia12299U1X..77A>h'h'rR   c                 d   d}d}t        j                  |dgd|gg      }t        j                  dgdgg      }t        j                  ddgddgg      }t        j                  dgdgg      }d}t        j                  |      j                  dd      }t	        ||||df|d      \  }	}
}t        |	t        j                  t        |                   t        j                  ||g      t        j                  t        |            j                  dd      z  }t        |
|       t        ||       y )	Nr"   g      ?r   r*   r#   rh   r%   ro   ri   )r;   lambda1lambda2r<   r=   r>   r?   rX   rA   rE   rF   rG   rq   s                rP   test_dlsim_simple2dzTestDLTI.test_dlsim_simple2d   s#   HHwnGn& 'HHsee HHsCjCj" #HHsee HHQKA& !Q1a!:dDbiia12HHgw/0 "		%( 3 ; ;B BCh'h'rR   c                    d}d}t        j                  |dgd|gg      }t        j                  ddgddgg      }t        j                  ddgg      }t        j                  ddgg      }d}t        ||||df|      \  }}	dd|z
  z  d|t        j                  |      z  z
  z  }
dd|z
  z  d|t        j                  |      z  z
  z  }t	        |	d   d d df   |
       t	        |	d   d d df   |       t        j                  ddg      }t        ||||df||	      \  }}t        j                  ||g      t        j                  d
|dz         j                  d
d      z  }d|dd d f<   |d |df   t        j                  |d|dz   d d f   |      z   }|d |df   t        j                  |d|dz   d d f   |      z   }t	        |d   d d df   |       t	        |d   d d df   |       dgddgdf}t        |d      \  }\  }t	        |g d       t        |j                  g dg       t        |d      \  }\  }t	        |g d       t        |j                  g dg       y )Nr"   g      ?r   r*   rV   r%   rW   r   )rX   rp   rh   r,   r   r(   )r   r   r+   )r   r*   g      ?)r   r%   r"   )
r.   r4   r
   rk   r   r   r7   dotr   r5   )r;   rt   ru   r<   r=   r>   r?   rX   tsysstp0stp1rp   tiyiimpy0y1rO   tys                        rP   test_more_step_and_impulsez#TestDLTI.test_more_step_and_impulse   s~   HHwnGn& 'HHsCjCj" #HHsCj\"HHsCj\" 1aA!,B q7{#g1.E(EFq7{#g1.E(EF1adT*1adT* XXsCj!1aAq/Q26B xx'*+IIb!a%088Q?@AqD	!QZ"&&Qq1uWaZ"55!QZ"&&Qq1uWaZ"551adR(1adR( %#tc*!$4A=)m_-6Q'4A=)k]+rR   N)
__name__
__module____qualname__rQ   rb   rf   rm   rr   rv   r    rR   rP   r   r      s)    S8j+5Z*8X
0((*,,rR   r   c                       e Zd Zd Zy)TestDltic           	         d}t        dgdg|      }t        |t              sJ t        |t               sJ t        |t              rJ |j                  |k(  sJ t        t        j                  g       t        j                  dg      d|      }t        |t              sJ t        |t               sJ t        |t              rJ |j                  |k(  sJ t        dgdgdd|      }t        |t              sJ t        |t               sJ t        |t              rJ |j                  |k(  sJ t        t        t         d       t        t        t         ddddd       y )Nr   r%   rh   r@   r(   )r   
isinstancer   r   r@   r.   r4   r   r   r9   
ValueError)r;   r@   ss      rP   test_dlti_instantiationz TestDlti.test_dlti_instantiation  s:    !rdr"!-...!T"""a%%%ttrzz "rxx~qR8!^,,,!T"""a%%%ttrzz !rdAqR(!Z(((!T"""a%%%ttrzz 	j$*j$1aA6rR   N)r   r   r   r   r   rR   rP   r   r     s    7rR   r   c                       e Zd Zd Zd Zd Zy)TestStateSpaceDiscc                 F   d}t        dddd|       t        dgdgdgdg|       t        t        j                  ddgddgg      t        j                  dgdgg      t        j                  ddgg      t        j                  dgg      |       t        ddddd       y )	Nr   r%   r   r'   r(   r)   r   T)r   r.   r4   r;   r@   s     rP   test_initializationz&TestStateSpaceDisc.test_initialization=  s    1aA"%A3aS1#"-288aVaV,-rxx!qc
/C88aVH%rxx!2	?1aA$'rR   c                 *   t        ddddd      }t        |j                         t               sJ t        |j                         t              sJ t        |j                         t              sJ t        |      |usJ |j                         |usJ y )Nr%   r'   r(   r)   r   r   )r   r   to_ssto_tfr   to_zpkr   r;   r   s     rP   test_conversionz"TestStateSpaceDisc.test_conversionF  s    q!Qd+!'')Z000!'')%5666!((*n555 !}A%%%wwy!!!rR   c                     t        ddddd      }t        |j                  dg       t        |j                  dg       y )Nr%   r   r   r*   r   )r   r   polesrj   r   s     rP   test_propertiesz"TestStateSpaceDisc.test_propertiesQ  s6    
 q!Qd+"&"&rR   Nr   r   r   r   r   r   r   rR   rP   r   r   <  s    (	"'rR   r   c                       e Zd Zd Zd Zd Zy)TestTransferFunctionc                     d}t        dd|       t        dgdg|       t        t        j                  dg      t        j                  dg      |       t        ddd       y Nr   r%   r   r'   T)r   r.   r4   r   s     rP   r   z(TestTransferFunction.test_initialization\  sO    A"%!qcb)1#!"=A$'rR   c                 .   t        ddgddgd      }t        |j                         t              sJ t        |j	                         t               sJ t        |j                         t              sJ t        |      |usJ |j	                         |usJ y )Nr%   r   rh   r   r   )r   r   r   r   r   r   r   r   s     rP   r   z$TestTransferFunction.test_conversiond  s    aVaW6!'')Z000!'')%5666!((*n555  "!+++wwy!!!rR   c                     t        ddgddgd      }t        |j                  dg       t        |j                  dg       y )Nr%   r   rh   r   r   r*   r   )r   r   r   rj   r   s     rP   r   z$TestTransferFunction.test_propertieso  s:    
 aVaW6"&"&rR   Nr   r   rR   rP   r   r   [  s    (	"'rR   r   c                       e Zd Zd Zd Zy)TestZerosPolesGainc                     d}t        ddd|       t        dgdgd|       t        t        j                  dg      t        j                  dg      d|       t        dddd       y r   )r   r.   r4   r   s     rP   r   z&TestZerosPolesGain.test_initializationz  sW    q!Q2&sQCr*rxx}bhhsmQ2>q!Q4(rR   c                 (   t        dddd      }t        |j                         t              sJ t        |j	                         t
              sJ t        |j                         t               sJ t        |      |usJ |j                         |usJ y )Nr%   r'   r(   r   r   )r   r   r   r   r   r   r   r   s     rP   r   z"TestZerosPolesGain.test_conversion  s~    1at,!'')Z000!'')%5666!((*n555 a )))xxz"""rR   N)r   r   r   r   r   r   rR   rP   r   r   y  s    )	#rR   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	Test_dfreqrespc                     t        dddgd      }g d}t        ||      \  }}g d}t        |j                  |d	       g d
}t        |j                  |d	       y )Nr%   r   r   r   )r   r%   rV   w)gU0*?g;On?gfj+r)   decimal)gClÿg&WgZd;O?)r   r   r   realimag)r;   rO   r   Hexpected_reexpected_ims         rP   test_manualzTest_dfreqresp.test_manual  sY     "!aY371%1 0AFFK; 1AFFK;rR   c                    t        dddgd      }g d}t        ||      \  }}t        j                  |dz        }t        j                  |j
                  |      t        j                  |j                  |      z  }|j                  }t        |j                  |       |j                  }t        |j                  |       y )Nr%   r   r   r   r   r%   rV   d   r   r-   )
r   r   r.   exppolyvalr$   rJ   r   r   r   )r;   rO   r   r   jwr   r   r   s           rP   	test_autozTest_dfreqresp.test_auto  s     "!aY371%1VVAF^JJvzz2&FJJ)CC ffAFFK0 ffAFFK0rR   c                     t        dddgd      }d}t        j                  dt        j                  dd      }t	        ||	      \  }}t        ||       y )
Nr%   r   r   r   rV   r   FendpointrW   )r   r.   r1   pir   r   )r;   rO   rX   
expected_wr   r   s         rP   test_freq_rangezTest_dfreqresp.test_freq_range  sM     "!aY37[[BEE2>
1%1Az*rR   c                     t        dgddgd      }t               5 }|j                  t        d       |j                  t        d       t	        |d	      \  }}d d d        d
   dk(  sJ y # 1 sw Y   xY wNr%   rh   r   r   zdivide by zero)messagezinvalid value encounteredr'   rW   r   r   )r   r   filterRuntimeWarningr   )r;   rO   supr   r   s        rP   test_pole_onezTest_dfreqresp.test_pole_one  sy     "1#2w37  	*CJJ~/?J@JJ~/JJKVq)DAq	* trzz		* 	*s   ?A..A7c                 L    t        dgddg      }t        t        t        |       y Nr%   )r   r9   r:   r   r;   rO   s     rP   
test_errorzTest_dfreqresp.test_error  s     aS1a&!ni8rR   c                    t        dgg d      }t        j                  g dg dg dg      }t        j                  g dg      j                  }t        j                  g dg      }d}t        ||||      }dt        j                  d	dd
      z  }t               5 }|j                  t               t        ||      \  }	}
t        ||      \  }}d d d        t        
       y # 1 sw Y   xY w)Nr'   )r%   r,   r   r   )r"   r   r   )r%   r   r   )r   r%   r   )r   r   r'   r   g      $@r"   r   )
r   r.   r4   r5   rk   r   r   r   r   r   )r;   	system_TFABCD	system_SSr   r   w1H1w2H2s                rP   test_from_state_spacez$Test_dfreqresp.test_from_state_space  s     !o.	HHk! " HHi[!##HHi[!Aq!$	"))Bq$$  	/CJJ'yA.FByA.FB	/
 	B#	/ 	/s   6C''C0c                     t        g dgd      }t        dddg      }g d}t        ||      \  }}t        ||      \  }}t        ||       y )Nr+   r    r%   r   r   r   )r   r   r   )r;   
system_ZPKr   r   r   r   r   r   s           rP   test_from_zpkzTest_dfreqresp.test_from_zpk  sQ    "cU3'
q$i(	:+B9*BB#rR   N)
r   r   r   r   r   r   r   r   r   r   r   rR   rP   r   r     s%    <1"+	9
$*$rR   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	Test_bodec                     d}t        dddg|      }dddt        j                  g}t        ||      \  }}}g d}t	        ||d	
       g d}t	        ||d	
       t        t        j                  |      |z  |       y )Nr   r    r%   r   r   r"   r   )gD!gvq!g$~;#g0*(r)   r   )gzGgJAg_)Pg     f)r   r.   r   r   r   r   r4   )	r;   r@   rO   r   r   magphaseexpected_magexpected_phases	            rP   r   zTest_bode.test_manual  s     !#4yR8#q"%% v+C =Cq9 BE>1= 	b("-rR   c                    t        dddgd      }t        j                  dddt        j                  g      }t	        ||      \  }}}t        j
                  |dz        }t        j                  |j                  |      t        j                  |j                  |      z  }d	t        j                  t        |            z  }t        ||       t        j                  t        j                  |            }	t        ||	       y )
Nr    r%   r   r   r   r"   r   r-   g      4@)r   r.   r4   r   r   r   r   r$   rJ   log10absr   rad2degangle)
r;   rO   r   r   r   r   r   r   r   r   s
             rP   r   zTest_bode.test_auto  s     "#4yS9HHc3255)*v+CVVAF^JJvzz2&FJJ)CC bhhs1v..C. BHHQK0E>2rR   c                     d}t        dddgd      }d}t        j                  dt        j                  |d	      |z  }t	        ||
      \  }}}t        ||       y )Nr   r    r%   r   r   rV   r   Fr   rW   )r   r.   r1   r   r   r   )r;   r@   rO   rX   r   r   r   r   s           rP   
test_rangezTest_bode.test_range  sY     !#4yS9[[BEE1u=B
f*3Az*rR   c                     t        dgddgd      }t               5 }|j                  t        d       |j                  t        d       t	        |d	      \  }}}d d d        d
   dk(  sJ y # 1 sw Y   xY wr   )r   r   r   r   r   )r;   rO   r   r   r   r   s         rP   r   zTest_bode.test_pole_one  s{     "1#2w37  	/CJJ~/?J@JJ~/JJK!&A.MAsE	/ trzz		/ 	/s   A A//A8c                 @    t        dgg dd      }t        |d       y )Nr%   )r%   r   r   r   r   r'   rW   )r   r   r   s     rP   test_imaginaryzTest_bode.test_imaginary%  s     "1#{s;frR   c                 L    t        dgddg      }t        t        t        |       y r   )r   r9   r:   r   r   s     rP   r   zTest_bode.test_error+  s     aS1a&!neV4rR   N)	r   r   r   r   r   r   r   r   r   r   rR   rP   r   r     s     .&3"	+	5rR   r   c                   "    e Zd ZdZd Zd Zd Zy)TestTransferFunctionZConversionz=Test private conversions between 'z' and 'z**-1' polynomials.c                 $   t        j                  g d      }t        j                  g d      }t        j                  ||      \  }}t	        ||       t	        ||       t        j
                  ||      \  }}t	        ||       t	        ||       y )Nr&   r(   r)   )      @      r.   r/   r   
_z_to_zinvr   
_zinv_to_zr;   r$   rJ   num2den2s        rP   	test_fullz)TestTransferFunctionZConversion.test_full4  sr    jj%jj%%00c:
dT"T"%00c:
dT"T"rR   c                 ,   t        j                  ddg      }t        j                  g d      }t        j                  ||      \  }}t	        g d|       t	        ||       t        j
                  ||      \  }}t	        g d|       t	        ||       y )Nr&   r(   )2   r   r   )r   r'   r(   )r&   r(   r   r   r   s        rP   test_numeratorz.TestTransferFunctionZConversion.test_numerator@  sv    jj#q"jj$%00c:
dT*T"%00c:
dT*T"rR   c                 ,   t        j                  g d      }t        j                  ddg      }t        j                  ||      \  }}t	        ||       t	        g d|       t        j
                  ||      \  }}t	        ||       t	        g d|       y )Nr   r   r   )r   r#   r   )r   r   r   r   r   s        rP   test_denominatorz0TestTransferFunctionZConversion.test_denominatorL  sv    jj$jj#q"%00c:
dT"T*%00c:
dT"T*rR   N)r   r   r   __doc__r   r  r  r   rR   rP   r   r   1  s    G
#
#
+rR   r   )!numpyr.   numpy.testingr   pytestr   r9   scipy._lib._array_apir   r   r   r   scipy.signalr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   rP   <module>r
     s     + * = = = =
J, J,Z7 7>' '>' '<# #*X$ X$vE5 E5P%+ %+rR   