Función de transferencia de segundo orden para diferenciar ecuaciones

0

Me pregunto si alguien podría verificar si mi conversión de una función de transferencia de segundo orden estándar a una ecuación de diferencia es correcta, y quizás también ayude a hacer una implementación de computadora. Ecuación inicial: $$ \ frac {Y (s)} {R (s)} = \ frac {\ omega_n ^ 2} {s ^ 2 + 2 \ zeta \ omega_ns + \ omega_n ^ 2} $$

Usando la ecuación de diferencia hacia atrás, $$ s = \ frac {1-z ^ {- 1}} {T} $$

Resultado: $$ a = 2 (1- \ zeta \ omega_nT) $$ $$ b = 2 \ zeta \ omega_nT + \ omega_n ^ 2T ^ 2 + 1 $$ $$ y (k) = \ frac {r (k-2) - ar (k-1) + br (k)} {\ omega_n ^ 2T} $$

Ahora, ¿cómo se implementaría alguien en un algoritmo para filtrar datos (ya que esto es solo un filtro de paso bajo de segundo orden)?

 % Coded in MATLAB
time = 1:1024;
wn = 0.5;
zwn = 1.414;
T = 1;
a = 2*zwn*T + (T^2)*wn^2 + 1;
b = T*wn^2;
c = 2*(1-zwn*T);
output = 10*sin(0.05*time + 10) + 4*sin(1*time+180);
y(1) = output(1);
y(2) = output(2);

for i=3:length(time)
    y(i) = (1/b)*(a*output(i) - output(i-2) + c*output(i-1));
end

Espero que esto filtre el ruido de 1 Hz de la salida, pero todo lo que hace es reducir la amplitud de todo el gráfico. ¿A dónde me voy mal?

    
pregunta Collaptic

0 respuestas

Lea otras preguntas en las etiquetas