ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] 신호 및 시스템 - 임펄스 함수
    python/신호및시스템 - python 2021. 7. 31. 00:23

    단위 임펄스 함수는 t=0에서만 1의 값을 가지고 그 외의 시간에서는 0의 값을 가집니다.

    식으로 표현하면 아래와 같습니다.

     

     

     

    이번에 사용할 함수는 where()입니다. 다른 좋은 방법이 있을 거 같은데 잘 모르겠네요.

    np.where( 조건식, 참일때, 거짓일때)

    np.where()를 사용하면 단점이 있는데 아래와 같이 np.aragne()를 음수부터 시작하면 지수 표기법으로 바뀝니다.

    때문에 t가 0일 때를 못 찾습니다.

    t = np.arange(-2, 2, 0.1)
    [-2.00000000e+00 -1.90000000e+00 -1.80000000e+00 -1.70000000e+00 -1.60000000e+00 -1.50000000e+00 -1.40000000e+00 -1.30000000e+00 -1.20000000e+00 -1.10000000e+00 -1.00000000e+00 -9.00000000e-01 -8.00000000e-01 -7.00000000e-01 -6.00000000e-01 -5.00000000e-01 -4.00000000e-01 -3.00000000e-01 -2.00000000e-01 -1.00000000e-01 1.77635684e-15 1.00000000e-01 2.00000000e-01 3.00000000e-01 4.00000000e-01 5.00000000e-01 6.00000000e-01 7.00000000e-01 8.00000000e-01 9.00000000e-01 1.00000000e+00 1.10000000e+00 1.20000000e+00 1.30000000e+00 1.40000000e+00 1.50000000e+00 1.60000000e+00 1.70000000e+00 1.80000000e+00 1.90000000e+00]

     

    import numpy as np
    import matplotlib.pylab as plt
    
    t = np.arange(0, 4, 0.1)
    x = np.where(t==1, 1, 0)
    plt.plot(t, x)
    plt.show()

    np.arrange()의 범위를 양수로 하면 간단히 됩니다

    t=1에서 삼각형이 되는 이유는 plot()은 점을 잇는 그래프를 출력하기 때문입니다.

    해결방법은 두 개가 있는데 x축 값을 좀 더 세밀하게 하는 방법과 plt.stem()를 쓰는 방법이 있습니다.

     

     

    t = np.arange(0, 4, 0.1)
    x = np.where(t==1, 1, 0)
    plt.stem(t, x)
    plt.show()

    t = np.arange(0, 4, 0.1)
    x = np.where(t==1, 1, 0) + 2*np.where(t==2, 1, 0) - 2*np.where(t==3, 1, 0)
    plt.stem(t, x)
    plt.show()

    댓글

Designed by Tistory.