
    (phS                        S SK rS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJrJrJrJrJrJrJrJrJrJrJrJr   " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r g)    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                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestDLTI   c                    [         R                  " SS/SS//5      n[         R                  " / SQ/ SQ/5      n[         R                  " SS//5      n[         R                  " / SQ/5      nSn[         R                  " [         R                  " S	S
SS9S S 2[         R                  4   [         R
                  " SS5      [         R
                  " SS5      45      n[         R                  " S	SSS9n[         R                  " / SQ/5      R                  n[         R                  " S	S	/SS/SS/SS/SS//5      n	[        XX4U4Xg5      u  pn[        X5        [        X5        [        Xz5        [        SS5        US	S/S S 24   n[         R                  " SS/5      n[        XX4U4X5      u  pn[        X5        [        X5        [        U
5      [        U5      :X  d   e[         R                  " SS/5      n[         R                  " / SQ5      n[         R                  " / S Q/5      R                  n[        UUS4US S 2S	4   U5      u  p[        X5        [        Xz5        [         R                  " US S 2S	4   5      nUR                  S!5      n[        UUS4UU5      u  p[        X5        [        Xz5        [         R                  " SS"/5      n[         R                  " S#[         R                  " S$5      -  S%[         R                  " S$5      -  /5      nSn[         R                  " / S&Q/5      R                  n[        UUUS4US S 2S	4   U5      u  p[        X5        [        Xz5        [        S'/S'S'/5      n[        [        [        UU5        g )(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                         R/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_dltisys.py
test_dlsim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	!: ;
 !!b!11;D!*3!*3!$- 	i aVQY<::sCj) !b!18FD!*3!*34yCI%%% jj#t%jj)XX  2 3 4 56A	 	 Cc?AadGT:
!$3!$- 

1QT7#d#Cc?E48
!$3!$- XXsDk"XXsRWWQZ'
):;<XX9:;==
BAs+Qq!tWd;
!$3!$- aS1a&!neVQ7    c                    [         R                  " SS/SS//5      n[         R                  " / SQ/ SQ/5      n[         R                  " SS//5      n[         R                  " / SQ/5      nSn[         R                  " / S	Q5      [         R                  " / S
Q5      [         R                  " / SQ5      4n[        XX4U4SS9u  px[        U5      S:X  d   e[	        S[        U5      5       H8  n	X   R
                  S   S:X  d   e[        X   R                  5       Xi   5        M:     S/SS/S4n
[         R                  " / SQ5      n[        U
SS9u  px[        U5      S:X  d   e[        US   R                  5       U5        [        U
S   U
S   5      S-   n[        USS9u  px[        U5      S:X  d   e[        US   R                  5       U5        [        S/SS/5      n[        [        [        U5        g )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/   r0   r
   r7   rangeshaper   flattenr   r   r:   r;   )r<   r=   r>   r?   r@   rA   yout_step_truthrF   rG   itfinyout_tfstepzpkinrP   s                 rQ   
test_dstepTestDLTI.test_dstepg   s   JJc
T3K01JJ(*:;<JJc
|$JJ()* :: 'D E :: '7 8 :: 'B C	D A!+r2
4yA~~q#d)$A7==#r)))%dgoo&79KL %
 Sz3'jj141%
4yA~~!$q'//"3[AtAwQ(615A&
4yA~~!$q'//"3[A aS1a&!neV4rT   c                    [         R                  " SS/SS//5      n[         R                  " / SQ/ SQ/5      n[         R                  " SS//5      n[         R                  " / SQ/5      nSn[         R                  " / S	Q5      [         R                  " / S
Q5      [         R                  " / SQ5      4n[        XX4U4SS9u  px[        U5      S:X  d   e[	        S[        U5      5       H8  n	X   R
                  S   S:X  d   e[        X   R                  5       Xi   5        M:     S/SS/S4n
[         R                  " / SQ5      n[        U
SS9u  px[        U5      S:X  d   e[        US   R                  5       U5        [        U
S   U
S   5      S-   n[        USS9u  px[        U5      S:X  d   e[        US   R                  5       U5        [        S/SS/5      n[        [        [        U5        g )Nr   r   r   r   r   r!   r"   r#   )
r   rV   g~jt?ggr]g{ю~gB"LQ.gE_ngRPɺ1g1%)
r   g?g rh?g<,?gdm?gZՒr0[gS¸xg^TDgg#~g}T`)
r   rW   g~jthgg?gr]?g{ю~?gB"LQ.?gE_n?gRPɺ1?g1%?rX   rY   r)   r   r+   )r   r+   g      r&   r[   )r/   r0   r   r7   r\   r]   r   r^   r   r   r:   r;   )r<   r=   r>   r?   r@   rA   yout_imp_truthrF   rG   r`   ra   yout_tfimpulserc   rP   s                 rQ   test_dimpulseTestDLTI.test_dimpulse   s   JJc
T3K01JJ(*:;<JJc
|$JJ()* ** &C D ** &D E ** &A BC qQ2."5
4yA~~q#d)$A7==#r)))%dgoo&79JK %
 Sz3'$45da(
4yA~~!$q'//"3^DtAwQ(61eq)
4yA~~!$q'//"3^D aS1a&!nh7rT   c                    [         R                  " S//5      n[         R                  " S//5      n[         R                  " S//5      n[         R                  " S//5      nSn[         R                  " U5      R                  SS5      n[	        XX4S4U5      u  pxn	[        U[         R                  " [        U5      5      5        [        U[         R                  " US45      5        [        U	[         R                  " US45      5        g )Nr   r$   r&   r/   r5   zerosr8   r	   r   arangefloat)
r<   r=   r>   r?   r@   rZ   rB   rF   rG   rH   s
             rQ   test_dlsim_trivialTestDLTI.test_dlsim_trivial   s    HHseWHHseWHHseWHHseWHHQKA& !a!4Dbiia12bhh1v./bhh1v./rT   c                    [         R                  " S//5      n[         R                  " S//5      n[         R                  " S//5      n[         R                  " S//5      nSn[         R                  " U5      R                  SS5      n[	        XX4S4USS9u  pxn	[        U[         R                  " [        U5      5      5        S[         R                  " [        U5      5      -  R                  SS5      n
[        X5        [        X5        g )Nr#   r   r+   r$   rl   r&   x0rm   )r<   r=   r>   r?   r@   rZ   rB   rF   rG   rH   expecteds              rQ   test_dlsim_simple1dTestDLTI.test_dlsim_simple1d   s    HHseWHHseWHHseWHHseWHHQKA& !a!:Dbiia12299U1X..77A>''rT   c                 b   SnSn[         R                  " US/SU//5      n[         R                  " S/S//5      n[         R                  " SS/SS//5      n[         R                  " S/S//5      nSn[         R                  " U5      R                  SS5      n[	        X4XVS4USS9u  pn[        U	[         R                  " [        U5      5      5        [         R                  " X/5      [         R                  " [        U5      5      R                  SS5      -  n[        X5        [        X5        g )	Nr#   g      ?r   r+   r$   rl   r&   rt   rm   )r<   lambda1lambda2r=   r>   r?   r@   rZ   rB   rF   rG   rH   rv   s                rQ   test_dlsim_simple2dTestDLTI.test_dlsim_simple2d   s   HHwnGn& 'HHsee HHsCjCj" #HHsee HHQKA& !a!:Dbiia12HHg/0 "		%( 3 ; ;B BC''rT   c                    SnSn[         R                  " US/SU//5      n[         R                  " SS/SS//5      n[         R                  " SS//5      n[         R                  " SS//5      nSn[        X4XVS4US9u  pSSU-
  -  SU[         R                  " U5      -  -
  -  n
SSU-
  -  SU[         R                  " U5      -  -
  -  n[	        U	S   S S 2S4   U
5        [	        U	S   S S 2S4   U5        [         R                  " SS/5      n[        X4XVS4X|S	9u  p[         R                  " X/5      [         R                  " S
US-   5      R                  S
S5      -  nSUSS S 24'   US U2S4   [         R                  " USUS-   2S S 24   U5      -   nUS U2S4   [         R                  " USUS-   2S S 24   U5      -   n[	        US   S S 2S4   U5        [	        US   S S 2S4   U5        S/SS/S4n[        USS9u  nu  n[	        U/ SQ5        [        UR                  / SQ/5        [        USS9u  nu  n[	        U/ SQ5        [        UR                  / SQ/5        g )Nr#   g      ?r   r+   rX   r&   rY   r   )rZ   ru   rl   r-   r   r)   )r   r   r,   )r   r+   g      ?)r   r&   r#   )
r/   r5   r
   ro   r   r   r8   dotr   r6   )r<   rz   r{   r=   r>   r?   r@   rZ   tsysstp0stp1ru   tiyiimpy0y1rP   tys                        rQ   test_more_step_and_impulse#TestDLTI.test_more_step_and_impulse   sn   HHwnGn& 'HHsCjCj" #HHsCj\"HHsCj\" aA!, q7{#g1.E(EFq7{#g1.E(EF1adT*1adT* XXsCj!1q/Q6 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]+rT    N)__name__
__module____qualname____firstlineno__rR   rd   ri   rq   rw   r|   r   __static_attributes__r   rT   rQ   r   r      s)    S8j+5Z*8X
0((*,,rT   r   c                       \ rS rSrS rSrg)TestDltii  c           	         Sn[        S/S/US9n[        U[        5      (       d   e[        U[         5      (       d   e[        U[        5      (       a   eUR                  U:X  d   e[        [
        R                  " / 5      [
        R                  " S/5      SUS9n[        U[        5      (       d   e[        U[         5      (       d   e[        U[        5      (       a   eUR                  U:X  d   e[        S/S/SSUS9n[        U[        5      (       d   e[        U[         5      (       d   e[        U[        5      (       a   eUR                  U:X  d   e[        [        [         S5        [        [        [         SSSSS5        g )Nr    r&   rl   rA   r)   )r   
isinstancer   r   rA   r/   r5   r   r   r:   
ValueError)r<   rA   ss      rQ   test_dlti_instantiation TestDlti.test_dlti_instantiation  sU    !rdr"!-....!T""""a%%%%ttrzz "rxx~qR8!^,,,,!T""""a%%%%ttrzz !rdAqR(!Z((((!T""""a%%%%ttrzz 	j$*j$1aA6rT   r   N)r   r   r   r   r   r   r   rT   rQ   r   r     s    7rT   r   c                   &    \ rS rSrS rS rS rSrg)TestStateSpaceDisci<  c                 6   Sn[        SSSSUS9  [        S/S/S/S/US9  [        [        R                  " SS/SS//5      [        R                  " S/S//5      [        R                  " SS//5      [        R                  " S//5      US9  [        SSSSSS9  g )	Nr    r&   r   r(   r)   r*   r   T)r   r/   r5   r<   rA   s     rQ   test_initialization&TestStateSpaceDisc.test_initialization=  s    1aA"%A3aS1#"-288aVaV,-rxx!qc
/C88aVH%rxx!2	?1aA$'rT   c                 F   [        SSSSSS9n[        UR                  5       [         5      (       d   e[        UR                  5       [        5      (       d   e[        UR                  5       [        5      (       d   e[        U5      ULd   eUR                  5       ULd   eg )Nr&   r(   r)   r*   r    r   )r   r   to_ssto_tfr   to_zpkr   r<   r   s     rQ   test_conversion"TestStateSpaceDisc.test_conversionF  s    q!Qd+!'')Z0000!'')%56666!((*n5555 !}A%%%wwy!!!rT   c                 z    [        SSSSSS9n[        UR                  S/5        [        UR                  S/5        g )Nr&   r    r   r+   r   )r   r   polesrn   r   s     rQ   test_properties"TestStateSpaceDisc.test_propertiesQ  s6    
 q!Qd+"&"&rT   r   Nr   r   r   r   r   r   r   r   r   rT   rQ   r   r   <  s    (	"'rT   r   c                   &    \ rS rSrS rS rS rSrg)TestTransferFunctioni[  c                     Sn[        SSUS9  [        S/S/US9  [        [        R                  " S/5      [        R                  " S/5      US9  [        SSSS9  g Nr    r&   r   r(   T)r   r/   r5   r   s     rQ   r   (TestTransferFunction.test_initialization\  sO    A"%!qcb)1#!"=A$'rT   c                 J   [        SS/SS/SS9n[        UR                  5       [        5      (       d   e[        UR	                  5       [         5      (       d   e[        UR                  5       [        5      (       d   e[        U5      ULd   eUR	                  5       ULd   eg )Nr&   r   rl   r    r   )r   r   r   r   r   r   r   r   s     rQ   r   $TestTransferFunction.test_conversiond  s    aVaW6!'')Z0000!'')%56666!((*n5555  "!+++wwy!!!rT   c                 ~    [        SS/SS/SS9n[        UR                  S/5        [        UR                  S/5        g )Nr&   r   rl   r    r   r+   r   )r   r   r   rn   r   s     rQ   r   $TestTransferFunction.test_propertieso  s:    
 aVaW6"&"&rT   r   Nr   r   rT   rQ   r   r   [  s    (	"'rT   r   c                        \ rS rSrS rS rSrg)TestZerosPolesGainiy  c                     Sn[        SSSUS9  [        S/S/SUS9  [        [        R                  " S/5      [        R                  " S/5      SUS9  [        SSSSS9  g r   )r   r/   r5   r   s     rQ   r   &TestZerosPolesGain.test_initializationz  sW    q!Q2&sQCr*rxx}bhhsmQ2>q!Q4(rT   c                 D   [        SSSSS9n[        UR                  5       [        5      (       d   e[        UR	                  5       [
        5      (       d   e[        UR                  5       [         5      (       d   e[        U5      ULd   eUR                  5       ULd   eg )Nr&   r(   r)   r    r   )r   r   r   r   r   r   r   r   s     rQ   r   "TestZerosPolesGain.test_conversion  s    1at,!'')Z0000!'')%56666!((*n5555 a )))xxz"""rT   r   N)r   r   r   r   r   r   r   r   rT   rQ   r   r   y  s    )	#rT   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)Test_dfreqrespi  c                     [        SSS/SS9n/ SQn[        XS9u  p#/ SQn[        UR                  USS	9  / S
Qn[        UR                  USS	9  g )Nr&   r   r   r   )r   r&   rX   w)gU0*?g;On?gfj+r*   decimal)gClÿg&WgZd;O?)r   r   r   realimag)r<   rP   r   Hexpected_reexpected_ims         rQ   test_manualTest_dfreqresp.test_manual  sU     "!aY37% 0AFFK; 1AFFK;rT   c                 |   [        SSS/SS9n/ SQn[        XS9u  p#[        R                  " US-  5      n[        R                  " UR
                  U5      [        R                  " UR                  U5      -  nUR                  n[        UR                  U5        UR                  n[        UR                  U5        g )Nr&   r   r   r   r   r&   rX   d   r   r.   )
r   r   r/   exppolyvalr%   rK   r   r   r   )r<   rP   r   r   jwr   r   r   s           rQ   	test_autoTest_dfreqresp.test_auto  s     "!aY37%VVAF^JJvzz2&FJJ)CC ffAFFK0 ffAFFK0rT   c                     [        SSS/SS9nSn[        R                  " S[        R                  SSS9n[	        XS	9u  pE[        XC5        g )
Nr&   r   r   r   rX   r   FendpointrY   )r   r/   r2   pir   r   )r<   rP   rZ   
expected_wr   r   s         rQ   test_freq_rangeTest_dfreqresp.test_freq_range  sG     "!aY37[[BEE2>
%A*rT   c                     [        S/SS/SS9n[        5        nUR                  [        SS9  UR                  [        SS9  [	        USS	9u  p4S S S 5        WS
   S:X  d   eg ! , (       d  f       N= fNr&   rl   r   r   zdivide by zero)messagezinvalid value encounteredr(   rY   r   r   )r   r   filterRuntimeWarningr   )r<   rP   supr   r   s        rQ   test_pole_oneTest_dfreqresp.test_pole_one  sp     "1#2w37 CJJ~/?J@JJ~/JJKVq)DA ! trzz	 ! s   5A""
A0c                 L    [        S/SS/5      n[        [        [        U5        g Nr&   )r   r:   r;   r   r<   rP   s     rQ   
test_errorTest_dfreqresp.test_error  s     aS1a&!ni8rT   c                    [        S// SQ5      n[        R                  " / SQ/ SQ/ SQ/5      n[        R                  " / SQ/5      R                  n[        R                  " / SQ/5      nSn[        X#XE5      nS[        R                  " S	SS
5      -  n[        5        nUR                  [        5        [        XS9u  p[        XgS9u  pS S S 5        [        W
W5        g ! , (       d  f       N= f)Nr(   )r&   r-   r   r   )r#   r   r   )r&   r   r   )r   r&   r   )r   r   r(   r   g      $@r#   r   )
r   r/   r5   r6   ro   r   r   r   r   r   )r<   	system_TFABCD	system_SSr   r   w1H1w2H2s                rQ   test_from_state_space$Test_dfreqresp.test_from_state_space  s     !o.	HHk! " HHi[!##HHi[!q$	"))Bq$$ CJJ'y.FBy.FB !
 	B# ! s   ,C
C-c                     [        / S/S5      n[        SSS/5      n/ SQn[        XS9u  pE[        X#S9u  pg[        XW5        g )Nr,   r!   r&   r   r   r   )r   r   r   )r<   
system_ZPKr   r   r   r   r   r   s           rQ   test_from_zpkTest_dfreqresp.test_from_zpk  sG    "cU3'
q$i(	:+9*B#rT   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   rT   rQ   r   r     s%    <1"+	9
$*$rT   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
	Test_bodei  c                     Sn[        SSS/US9nSSS[        R                  /n[        X#S9u  pEn/ SQn[	        XWS	S
9  / SQn[	        XhS	S
9  [        [        R                  " U5      U-  U5        g )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   r5   )	r<   rA   rP   r   r   magphaseexpected_magexpected_phases	            rQ   r   Test_bode.test_manual  sw     !#4yR8#q"%% v+ =Cq9 BE1= 	b("-rT   c                    [        SSS/SS9n[        R                  " SSS[        R                  /5      n[	        XS9u  p4n[        R
                  " US-  5      n[        R                  " UR                  U5      [        R                  " UR                  U5      -  nS	[        R                  " [        U5      5      -  n[        XH5        [        R                  " [        R                  " U5      5      n	[        XY5        g )
Nr!   r&   r   r   r   r#   r   r.   g      4@)r   r/   r5   r   r   r   r   r%   rK   log10absr   rad2degangle)
r<   rP   r   r   r   r   r   r   r   r   s
             rQ   r   Test_bode.test_auto  s     "#4yS9HHc3255)*v+VVAF^JJvzz2&FJJ)CC bhhs1v..C. BHHQK0E2rT   c                     Sn[        SSS/SS9nSn[        R                  " S[        R                  USS	9U-  n[	        X#S
9u  pVn[        XT5        g )Nr   r!   r&   r   r   rX   r   Fr   rY   )r   r/   r2   r   r   r   )r<   rA   rP   rZ   r   r   r   r   s           rQ   
test_rangeTest_bode.test_range  sS     !#4yS9[[BEE1u=B
f*A*rT   c                     [        S/SS/SS9n[        5        nUR                  [        SS9  UR                  [        SS9  [	        USS	9u  p4nS S S 5        WS
   S:X  d   eg ! , (       d  f       N= fr   )r   r   r   r   r   )r<   rP   r   r   r   r   s         rQ   r   Test_bode.test_pole_one  sr     "1#2w37 CJJ~/?J@JJ~/JJK!&A.MAE ! trzz	 ! s   6A##
A1c                 4    [        S// SQSS9n[        USS9  g )Nr&   )r&   r   r   r   r   r(   rY   )r   r   r   s     rQ   test_imaginaryTest_bode.test_imaginary%  s     "1#{s;frT   c                 L    [        S/SS/5      n[        [        [        U5        g r   )r   r:   r;   r   r   s     rQ   r   Test_bode.test_error+  s     aS1a&!neV4rT   r   N)r   r   r   r   r   r   r  r   r  r   r   r   rT   rQ   r   r     s     .&3"	+	5rT   r   c                   *    \ rS rSrSrS rS rS rSrg)TestTransferFunctionZConversioni1  z=Test private conversions between 'z' and 'z**-1' polynomials.c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[        R                  " X5      u  p4[	        X5        [	        X$5        [        R
                  " X5      u  p4[	        X5        [	        X$5        g )Nr'   r)   r*   )      @      r/   r0   r   
_z_to_zinvr   
_zinv_to_zr<   r%   rK   num2den2s        rQ   	test_full)TestTransferFunctionZConversion.test_full4  sb    jj%jj%%00:
""%00:
""rT   c                 (   [         R                  " SS/5      n[         R                  " / SQ5      n[        R                  " X5      u  p4[	        / SQU5        [	        X$5        [        R
                  " X5      u  p4[	        / SQU5        [	        X$5        g )Nr'   r)   )2   r  r  )r   r(   r)   )r'   r)   r   r  r  s        rQ   test_numerator.TestTransferFunctionZConversion.test_numerator@  sj    jj#q"jj$%00:
T*"%00:
T*"rT   c                 (   [         R                  " / SQ5      n[         R                  " SS/5      n[        R                  " X5      u  p4[	        X5        [	        / SQU5        [        R
                  " X5      u  p4[	        X5        [	        / SQU5        g )Nr  r  r  )r   r$   r  )r  r  r   r  r  s        rQ   test_denominator0TestTransferFunctionZConversion.test_denominatorL  sj    jj$jj#q"%00:
"T*%00:
"T*rT   r   N)	r   r   r   r   __doc__r  r"  r%  r   r   rT   rQ   r  r  1  s    G
#
#
+rT   r  )!numpyr/   numpy.testingr   pytestr   r:   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   rT   rQ   <module>r-     s     + * = = = =
J, J,Z7 7>' '>' '<# #*X$ X$vE5 E5P%+ %+rT   