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]
