
    doi?T                        S SK r S SK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)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                         [/var/www/html/land-ocr/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.   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_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4rS   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   rU   g~jt?ggr]g{ю~gB"LQ.gE_ngRPɺ1g1%)
r   g?g rh?g<,?gdm?gZՒr0[gS¸xg^TDgg#~g}T`)
r   rV   g~jthgg?gr]?g{ю~?gB"LQ.?gE_n?gRPɺ1?g1%?rW   rX   r(   r   r*   )r   r*   g      r%   rZ   )r.   r/   r
   r6   r[   r\   r   r]   r   r   r9   r:   )r;   r<   r=   r>   r?   r@   yout_imp_truthrE   rF   r_   r`   yout_tfimpulserb   rO   s                 rP   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7rS   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.   r4   zerosr7   r   r   arangefloat)
r;   r<   r=   r>   r?   rY   rA   rE   rF   rG   s
             rP   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./rS   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#   rk   r%   x0rl   )r;   r<   r=   r>   r?   rY   rA   rE   rF   rG   expecteds              rP   test_dlsim_simple1dTestDLTI.test_dlsim_simple1d   s    HHseWHHseWHHseWHHseWHHQKA& !a!:Dbiia12299U1X..77A>''rS   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#   rk   r%   rs   rl   )r;   lambda1lambda2r<   r=   r>   r?   rY   rA   rE   rF   rG   ru   s                rP   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''rS   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*   rW   r%   rX   r   )rY   rt   rk   r,   r   r(   )r   r   r+   )r   r*   g      ?)r   r%   r"   )
r.   r4   r	   rn   r   r
   r7   dotr   r5   )r;   ry   rz   r<   r=   r>   r?   rY   tsysstp0stp1rt   tiyiimpy0y1rO   tys                        rP   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]+rS    N)__name__
__module____qualname____firstlineno__rQ   rc   rh   rp   rv   r{   r   __static_attributes__r   rS   rP   r   r      s)    S8j+5Z*8X
0((*,,rS   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%   rk   r@   r(   )r   
isinstancer   r   r@   r.   r4   r   r   r9   
ValueError)r;   r@   ss      rP   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6rS   r   N)r   r   r   r   r   r   r   rS   rP   r   r     s    7rS   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.   r4   r;   r@   s     rP   test_initialization&TestStateSpaceDisc.test_initialization=  s    1aA"%A3aS1#"-288aVaV,-rxx!qc
/C88aVH%rxx!2	?1aA$'rS   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     rP   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!!!rS   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   polesrm   r   s     rP   test_properties"TestStateSpaceDisc.test_propertiesQ  s6    
 q!Qd+"&"&rS   r   Nr   r   r   r   r   r   r   r   r   rS   rP   r   r   <  s    (	"'rS   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.   r4   r   s     rP   r   (TestTransferFunction.test_initialization\  sO    A"%!qcb)1#!"=A$'rS   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   rk   r   r   )r   r   r   r   r   r   r   r   s     rP   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!!!rS   c                 ~    [        SS/SS/SS9n[        UR                  S/5        [        UR                  S/5        g )Nr%   r   rk   r   r   r*   r   )r   r   r   rm   r   s     rP   r   $TestTransferFunction.test_propertieso  s:    
 aVaW6"&"&rS   r   Nr   r   rS   rP   r   r   [  s    (	"'rS   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.   r4   r   s     rP   r   &TestZerosPolesGain.test_initializationz  sW    q!Q2&sQCr*rxx}bhhsmQ2>q!Q4(rS   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     rP   r   "TestZerosPolesGain.test_conversion  s    1at,!'')Z0000!'')%56666!((*n5555 a )))xxz"""rS   r   N)r   r   r   r   r   r   r   r   rS   rP   r   r   y  s    )	#rS   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%   rW   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_manualTest_dfreqresp.test_manual  sU     "!aY37% 0AFFK; 1AFFK;rS   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%   rW   d   r   r-   )
r   r   r.   exppolyvalr$   rJ   r   r   r   )r;   rO   r   r   jwr   r   r   s           rP   	test_autoTest_dfreqresp.test_auto  s     "!aY37%VVAF^JJvzz2&FJJ)CC ffAFFK0 ffAFFK0rS   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   rW   r   FendpointrX   )r   r.   r1   pir   r   )r;   rO   rY   
expected_wr   r   s         rP   test_freq_rangeTest_dfreqresp.test_freq_range  sG     "!aY37[[BEE2>
%A*rS   c                    [        S/SS/SS9n[        R                  " 5          [        R                  " SS[        5        [        R                  " SS[        5        [        USS	9u  p#S S S 5        WS
   S:X  d   eg ! , (       d  f       N= fNr%   rk   r   r   ignorezdivide by zerozinvalid value encounteredr'   rX   r   r   )r   warningscatch_warningsfilterwarningsRuntimeWarningr   )r;   rO   r   r   s       rP   test_pole_oneTest_dfreqresp.test_pole_one  s|     "1#2w37$$&##H.>O##5~GVq)DA	 '
 trzz '&s   AA==
Bc                 L    [        S/SS/5      n[        [        [        U5        g Nr%   )r   r9   r:   r   r;   rO   s     rP   
test_errorTest_dfreqresp.test_error  s     aS1a&!ni8rS   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[
        R                  " 5          [
        R                  " S[        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   r.   r4   r5   rn   r   r   simplefilterr   r   r   )r;   	system_TFABCD	system_SSr   w1H1w2H2s               rP   test_from_state_space$Test_dfreqresp.test_from_state_space  s     !o.	HHk! " HHi[!##HHi[!q$	"))Bq$$$$&!!(O<y.FBy.FB '
 	B# '&s   )2C00
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           rP   test_from_zpkTest_dfreqresp.test_from_zpk  sG    "cU3'
q$i(	:+9*B#rS   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   rS   rP   r   r     s%    <1"+
9
$*$rS   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   r4   )	r;   r@   rO   r   r   magphaseexpected_magexpected_phases	            rP   r   Test_bode.test_manual  sw     !#4yR8#q"%% v+ =Cq9 BE1= 	b("-rS   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.   r4   r   r   r   r   r$   rJ   log10absr   rad2degangle)
r;   rO   r   r   r   r   r   r   r   r   s
             rP   r   Test_bode.test_auto  s     "#4yS9HHc3255)*v+VVAF^JJvzz2&FJJ)CC bhhs1v..C. BHHQK0E2rS   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   rW   r   Fr   rX   )r   r.   r1   r   r   r   )r;   r@   rO   rY   r   r   r   r   s           rP   
test_rangeTest_bode.test_range  sS     !#4yS9[[BEE1u=B
f*A*rS   c                    [        S/SS/SS9n[        R                  " 5          [        R                  " SS[        5        [        R                  " SS[        5        [        USS	9u  p#nS S S 5        WS
   S:X  d   eg ! , (       d  f       N= fr   )r   r   r   r   r   r   )r;   rO   r   r   r   s        rP   r   Test_bode.test_pole_one  s~     "1#2w37$$&##H.>O##5~G!&A.MAE	 '
 trzz '&s   AA>>
Bc                 4    [        S// SQSS9n[        USS9  g )Nr%   )r%   r   r   r   r   r'   rX   )r   r   r   s     rP   test_imaginaryTest_bode.test_imaginary'  s     "1#{s;frS   c                 L    [        S/SS/5      n[        [        [        U5        g r   )r   r9   r:   r   r   s     rP   r   Test_bode.test_error-  s     aS1a&!neV4rS   r   N)r   r   r   r   r   r   r	  r   r  r   r   r   rS   rP   r   r     s     .&3"	+
5rS   r   c                   *    \ rS rSrSrS rS rS rSrg)TestTransferFunctionZConversioni3  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.   r/   r   
_z_to_zinvr   
_zinv_to_zr;   r$   rJ   num2den2s        rP   	test_full)TestTransferFunctionZConversion.test_full6  sb    jj%jj%%00:
""%00:
""rS   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        rP   test_numerator.TestTransferFunctionZConversion.test_numeratorB  sj    jj#q"jj$%00:
T*"%00:
T*"rS   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        rP   test_denominator0TestTransferFunctionZConversion.test_denominatorN  sj    jj$jj#q"%00:
"T*%00:
"T*rS   r   N)	r   r   r   r   __doc__r  r#  r&  r   r   rS   rP   r  r  3  s    G
#
#
+rS   r  ) r   numpyr.   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   rS   rP   <module>r-     s      * = = = =
J, J,Z7 7>' '>' '<# #*Y$ Y$xF5 F5R%+ %+rS   