TB065

Index Commits Files Refs
guias/2_19.py (1012B)
   1 # 2_19.py
   2 
   3 import numpy as np
   4 import matplotlib.pyplot as plt
   5 from scipy import signal
   6 
   7 # `a` coeficientes de la entrada
   8 # `b` coeficientes de las salida
   9 def respuesta_impulso(a, b, N):
  10     a = np.array(a)
  11     b = np.array(b)
  12 
  13     # delta para la entrada
  14     x = np.zeros(N)
  15     x[0] = 1
  16 
  17     y = np.zeros(N)
  18 
  19     for n in range(N):
  20         # entrada
  21         parte_x = 0
  22         for i in range(len(a)):
  23             # condicion de reposo inicial
  24             if n - i >= 0:
  25                 parte_x += a[i] * x[n - i]
  26 
  27         # salida
  28         parte_y = 0
  29         for j in range(1, len(b)):
  30             # condicion de reposo inicial
  31             if n - j >= 0:
  32                 parte_y += b[j] * y[n - j]
  33 
  34         # normalizado por a0 (por si es distinto de 1)
  35         y[n] = (parte_x - parte_y) / a[0]
  36 
  37     return y
  38 
  39 # `y(n) - 0.25*y(n - 1) = x(n)` coeficientes: a = [1, -0.5] y b = [1]
  40 a = [1]
  41 b = [1, -0.25]
  42 N = 5
  43 
  44 h = respuesta_impulso(a, b, N)
  45 print(h) # [1.         0.25       0.0625     0.015625   0.00390625]