Está en la página 1de 12

Práctica 1: Filtros, secuencia ponderatriz y covarianzas estimadas

Ejercicio 1:
1. Leer la ayuda del comando cra, explicar su funcionamiento y utilizarlo para estimar
la secuencia ponderatriz y las funciones de covarianza a partir de las secuencias de
entrada/salida obtenidas mediante el código de MATLAB.

A=[1 -1.50 0.70]; % El primer ekemento tiene que ser '1'/ A es el denominador del filtro
B=[0 1 0.50]; % B es el numerador del filtro
t=(1:1000)';
u=sign(randn(size(t)));% Entrada de '1' o '-1'

Una vez declaradas las variables procedemos a declarar la ecuacion que relaciona a todas ellas:

y=filter(B,A,u)+0.1*randn(size(t));
rango=(100:200);
 
 
% Representamos el filtro
figure(1);
plot(t(rango),u(rango),t(rango),y(rango));
title('Datos de entrada y salida');
legend('Entrada','Salida');
 
 
% Representamos el filtro de otra forma
figure(2);
subplot(2,1,1);
stairs(t(rango),u(rango))
title('Datos de entrada');
xlabel('muestra (t)')
ylabel('u_t')
subplot(2,1,2);
stairs(t(rango),y(rango))
title('Datos de salida');
xlabel('muestra (t)')
ylabel('y_t')
% Representamos el filtro de otra forma
figure(3);
subplot(2,1,1);
stem(t(rango),u(rango))
title('Datos de entrada');
xlabel('muestra (t)')
ylabel('u_t')
subplot(2,1,2);
stem(t(rango),y(rango))
title('Datos de salida');
xlabel('muestra (t)')
ylabel('y_t')
2. Dibujar la secuencia ponderatriz y las covarianzas estimadas.
En este apartado lo que buscamos es, mediante la entrada y la salida del sistema, obtener la secuencia
ponderatriz(tambien llamada secuencia impulsional) la cual producira un resultado en un sistema igual
que el filtro original.

Para ello nos ayudaremos de la funcion de matlab cra.

Z = [y u];
% [IR,R,CL] = cra(Z,M,NA,PLOT)
% M= Nºmuestras*Tiempo de muestreo
ir=cra(Z)

ir =
0.0110
1.0390
2.0552
2.3613
2.1011
1.5048
0.7844
0.1177
-0.3719
-0.6498
% Los que estan por encima o por debajo son distintos de cero en un 99% de
% posibilidades.
% Si todas las muestras estan dentro es que no hay respuesta impulsional
% (No hay relacion entre la entrada y la salida)
[IR,R,CL] = cra(Z,1000,0,1);

Warning: The number of lags used by the "cra" function was changed to 500.
% Como es un sistema estable a partir de un tiempo la señal tiende a cero y
% solo resuena por temas matematicos.
% IR=h ->Respuesta impulsional
 
% Si la funcion cra se le pone el último valor a 2 se crea una gráfica que cuenta con las cov
[IR,R,CL] = cra(Z,20,0,2);% Dibuja las covarianzas las que salen en el CL
% Covarianza de la entrada-> Ruido blanco
% Covarianza de la salida-> Ruido coloreado(es un ruido blanco que ha pasado por un filtro lin
 

Se puede observar gracias a la covarianza de la señal de entrada que se trata de un ruido blanco;
mientras que la covarianza de la señal de salida se trata de un ruido colorado; ya que a medida que
se mueve la señal la covarianza va descendiendo, mientras que en la primera señal en cuanto se
desplaza la señal la covarianza cae a zero.

3. Comparar la secuencia ponderatriz estimada con la teórica.

impulse=zeros(size(t));
impulse(1)=1;
hv=filter(B,A,impulse);% Esta es la respuesta impulsionada del filtro.
 
figure(4)
subplot(2,1,1);
stem(t(1:20),hv(1:20));
subplot(2,1,2);
stem(t(1:20),IR(1:20));
Como se puede observar gracias alas gráficas la secuencia ponderatriz obtenida en el apartado
anterior tiene una respuesta practicamente identica a la secuencia ponderatriz obtenida en este
apartado gracias a la función filter.

4-Comparar la salida de una entrada escalon en el filtro con la respuesta impulsional.

escalon=ones(size(t));% Se declara la entrada escalon.

A continuación procederemos a obtener la salida del sistema frente a ambos filtros tanto el real como el
calculado. Para ello nos serviremos de la función de matlab filter. Para el filtro real procederemos como
en el primer apartado, pero para el segundo lo que haremos sera usar la respuesta impulsional como
numerador del filtro y un denominador de 1.

sv=filter(B,A,escalon);
s=filter(IR,1,escalon); % Calculo de la respuesta al escalon mediante la respuesta impulsional
 
% Representamos las salidas del sistema.
figure(5)
subplot(2,1,1);
stem(t(1:20),sv(1:20));
subplot(2,1,2);
stem(t(1:20),s(1:20));

Ejercicio 2:
1. Leer la ayuda del comando spa, explicar su funcionamiento y utilizarlo para estimar
la respuesta en frecuencia y el espectro del ruido a partir de las mismas secuencias de
entrada/salida del ejercicio anterior.
La función spa de matlab es una función a la cual mediante la matriz z, formada por dos columnas
que son las entradas y las salidas del sistema, es capaz de devolvernos la frecuencia de respuesta y
tambien de devolvernos el espectro del ruido añadido de V en el modelo y = G u + v.

H=spa(Z)

H =
IDFRD model.
Contains Frequency Response Data for 1 output(s) and 1 input(s), and the spectra for disturbances at the
Response data and disturbance spectra are available at 128 frequency points, ranging from 0.02454 rad/s

Sample time: 1 seconds


Output channels: 'y1'
Input channels: 'u1'
Status:
Estimated using SPA on time domain data "Z".

2. Dibujar la respuesta en frecuencia y el espectro del ruido estimados.


En este apartado se utilizara la respuesta obtenida en el apartado anterior con la funcion de matlab spa
y la representaremos en este circuito mediante el comando bode.

figure(7)
bodeplot(H)
3. Comparar la respuesta en frecuencia estimada con la teórica.
Para este último apartado se representara tanto el bode de la respuesta calculada mediante el
comando spa con la respuesta en frecuencia de el filtro original obtenido mediante el comando en
ambos casos de bode.

figure(8)
bodeplot(H)

 
filtro=tf(B,A,1);
figure(9)
bode(filtro)

También podría gustarte