Rms Matlab
Short Description
Descripción: matlab, RMS...
Description
Tema 2 Técnicas de identificación no paramétricas Ejercicios y problemas resueltos Problema 2.1. Se quiere diseñar una señal de excitación Random discreta de media 5, desviación estándar 2 (o varianza 4), con 200 elementos y periodo de muestreo de 0.2 segundos. Evaluar utilizando como herramienta el programa Matlab, la variación temporal y la densidad espectral estimada. Calcular su energía total o RMS Solución El programa Matlab dispone de una función randn que permite generar una secuencia de números aleatorios de media cero y variancia 1. Por lo tanto aplicando: >>u=5+2*randn(N,1); con N=200 es posible generar un vector con N filas y una columna de media 5 y desviación estándar 2. La función spectrum estima la densidad espectral de la señal utilizando el método de Welch. >> P = spectrum(u) la visualización del espectro se realiza utilizando el comando specplot >>specplot(P,Fs) siendo Fs la frecuencia de muestreo del señal. Observar que la frecuencia máxima es de: (N-1)/N*Fs/2, ya que se evalúa en la región entre 0 y π. La figura muestra la variación temporal y la densidad espectral de la señal diseñada. Para la representación temporal, generamos el vector tiempo como: >>t=0:0.2:(200-1)*0.2; %variaciones de 0.2 >>%obtención de las curvas >> subplot(211),plot(t,u),title('variacion temporal'), xlabel('tiempo'),ylabel('amplitud') >> subplot(212),specplot(P,1/0.2) Aplicando la ecuación (2.2) se determina la energía total o RMS de la señal diseñada: >> sqrt(sum(u.^2)/N)
1
Problema 2.2. Se quiere filtrar la señal diseñada en el problema anterior de forma que tenga un ancho de banda de 1.5Hz. Observar la variación temporal y espectral de la nueva señal. Solución El programa Matlab dispone de una pantalla gráfica para diseñar filtros de distintas características, fdatool. En nuestro caso se pretende diseñar un filtro discreto IIR pasa bajos de orden 2. El método utilizado será butterword. >> fdatool Nos aparece la pantalla de diseño (figura P2.2), en la que debemos seleccionar el método de diseño del filtro, el orden, la frecuencia de muestreo de la señal (1/0.2) y la frecuencia de corte. Una vez definidos los parámetros podemos diseñar el filtro, ver figura.
2
En file seleccionar export, definiendo la matriz SOS y ganancia G. Obteniéndose: >> SOS SOS = 1.0000 >> G G=
2.0000
1.0000
1.0000
0.3695
0.1958
0.3913
La función de transferencia del filtro discreto es: > NUM=G*SOS(1:3) NUM = 0.3913
0.7827
0.3913
>> DEN=SOS(4:6) DEN = 1.0000
0.3695
0.1958
Señal filtrada >> sys=tf(NUM,DEN,0.2) Transfer function: 0.3913 z^2 + 0.7827 z + 0.3913 -----------------------------z^2 + 0.3695 z + 0.1958
Aplicación del filtro diseñado a determinada en el problema anterior:
la
señal
u
>uf=filter(NUM,DEN,u); >Pf=spectrum(uf); >specplot(Pf,1/0.2);
Espectro de la señal filtrada
3
Problema 2.3. Se quiere generar una señal MLBS con las siguientes características: ancho de banda 6 Hz, con una frecuencia mínima de 0.1 Hz, 4 muestras por cambio de registro y 2 periodos. Mostrar tanto la variación temporal como frecuencial. Solución 1. Determinar ∆t. Ya que la potencia media del ancho de banda se da aproximadamente en 0.443/∆t, para que esta esté situada a 6Hz el valor de ∆t debe ser: ∆t=0.443/6≈0.074. 2. Ajuste de M. Al ser fmin≈0.1, el valor de M debe estar próximo a 135. Según la tabla 2.1 el M mas próximo a este valor es cuando en número de registros es de 7 y por lo tanto M = 127. El valor de fmin será de: fmin = 1/(M*∆t ) = 0.1064. 3. La frecuencia de muestreo de la señal será de ∆t=0.074, ya que se toman 4 muestras por cambio de registro ts = ∆t/4 = 0.0185. Se ha programado una función Matlab de nombre sbina >> [t,s,f,S]=sbina(n, fmax, sdt,amp,periods,invre) con entradas n número de registros fmax frecuencia máxima de interés en el diseño de la señal sdt numero de muestras a adquirir por registro amp amplitud de la señal de entrada (-a,a) periods número de periodos de la señal de entrada invre señal con armónicos impares (odd harmònic) Como salidas de la función tenemos: t s f S
vector tiempo señal obtenida frecuencia de la señal transformada de Fouries de la señal
En nuestro caso tendremos por lo tanto: >> [t,s,f,S]=sbina(7, 6, 4,1,2) Los resultados obtenidos se muestran en la siguiente figura P2.6 MLBS [ fmax: 6 Hz, regs: 7, samples/bit: 4, fund: 0.107143 Hz, fr: 54.4286 Hz, amp: 1.00 ] 1 0.5 0 Amplitude -0.5 -1 0
2
4
6
8 10 12 Time (s) [ 1016 Samples ]
14
16
18
Spectrum of above 0.2
0.15
0.1 Amplitude 0.05
0 0
5f(-3db)
10
15 Frequency (Hz)
4
20
25
30
Problema 2.4 Se pretende diseñar 3 periodos de dos señales multisinusoidal con las siguientes características: 0.04 Hz de frecuencia fundamental, de 60 armónicos y una amplitud de 1 parar cada componente, una de ellas se diseñará utilizando una la frecuencia random y la segunda utilizando el método de Schroeder. La frecuencia de adquisición de datos será de 50 Hz. Se pretende comparar las dos señales obtenidas desde el campo temporal y frecuencial. Solución Definimos las características de las señales >>harm=60; fund=0.04; a=1; Fs=50; period=3; >>Tsamples=round(Fs/fund); >>samples=Tsamples*period; >>t=(0:1/Fs:samples/Fs)’-1/Fs; Considerando una fase random >>FI=2*pi*rand(harm,1); >>u=zeros(size(t)); >>Fv=fund*(1:harm)’; >>for i=1:harm >> u=u+cos(2*pi*Fv(i)*t+FI(i)*ones(size(t))); >>end >>plot(t,u) Para hacer el estudio espectral de una señal con mas de un periodo, la frecuencia queda definida como: >>n=length(u); >>f=fund/period*(1:period*harm)'; >>Udat=fft(u,n); >>Udat=Udat(1:(n/2+1)); >>Udat(2:n/2)=2*Udat(2:n/2)/n; >>% espectro de la senyal de entrada >>Guu=conj(Udat).*Udat; >>plot(f,Guu(2:period*harm+1)), title('Espectro'),xlabel('Frecuencia') Espectro
Respuesta temporal 1.4
15
1.2
10
1
5 0.8
0 0.6
-5 0.4
-10
-15 0
0.2
0
10
20
30
40 tiempo
50
60
70
80
0
0.5
1
1.5 Frecuencia
Con un factor de cresta de 2.4774.
5
2
2.5
En el caso de utilizar el método de Schroeder, la fase se determina: >>FI1=pi*((1:harm)').^2/harm; >>u1=zeros(size(t)); >>for i=1:harm >> u1=u1+cos(2*pi*Fv(i)*t+FI1(i)*ones(size(t))); >>end >>plot(t,u1) >>U1dat=fft(u1,n); >>U1dat=U1dat(1:(n/2+1)); >>U1dat(2:n/2)=2*U1dat(2:n/2)/n; >>% espectro de la senyal de entrada >>Guu1=conj(U1dat).*U1dat; >>plot(f,Guu1(2:period*harm+1)) 1.4
10 8
1.2
6 1
4 0.8
2 0
0.6
-2 0.4
-4 -6
0.2
-8 0
-10 0
0
10
20
30
40
50
60
70
0.5
1
1.5
2
2.5
80
Con un factor de cresta de 1.7386.
Problema 2.5. Se tiene un sistema representado por la función de transferencia discreta con un periodo de muestreo de 1 segundo: q −1 + 0.5q −2 y (t ) = u (t ) + v (t ) 1 − 1.5q −1 + 0.7 q− 2 a) Comparar la respuesta impulsional del sistema en el caso en que no haya ruido, v(t)=0, y en el caso en que el ruido sea coloreado con una función de transferencia:
v (t ) =
1 − q −1 + 0.2q −2 e (t ) 1 − 1.5q −1 + 0.7 q −2
siendo e(t) un ruido blanco de varianza 0.5. b) Determinar los valores de la respuesta impulsional en cada caso y calcular el error cuadrado acomunado en presencia de ruido. Solución a) Para determinar la respuesta impulsional del sistema utilizando el programa MATLAB v5 y v6, se debe proceder de la siguiente forma:
6
>> % simulamos el sistema con la instrucción dimpulse considerando que v(t)=0 >> % la evaluación se realizará sobre 40 muestras >> yimp=dimpulse([0 1 0.5],[1 -1.5 0.7],40); >> % simulamos la parte estocástica del sistema a una entrad randon >> e=sqrt(0.5)*randn(40,1); >> v=dlsim([1 –1 0.2],[1 –1.5 0.7],e); >> yv=yimp+v; Respuesta impulsional sin ruido (-) y con ruido (--) >> t=1:40; 2.5 >> plot(t,yimp,t,yv,’—‘) 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2
0
5
10
15
20
25
30
35
40
tiempo
b) Los valores de la respuesta impulso (yimp) en el caso en que no hay ruido son una secuencia de valores infinita: g(t)= [ 0 1.0000 2.0000 2.3000 2.0500 1.4650 0.7625 0.1182 -0.3564 -0.6173 ...] esta secuencia de valores se obtiene dividiendo el numerador por el denominador de la función de transferencia. En el caso en que si hay ruido (yv), la secuencia que se obtiene es: g(t)= [0.3955 1.5360 1.7876 2.3558 1.0422 0.3852 -0.2976 -0.2088 -1.6083 -1.9502 ...] con un error cuadrado acumulado de: > sum((yimp-yv).^2)/40 = 0.6006
Problema 2.6 Se desea estimar la respuesta impulsional del sistema que tienen por función de transferencia:
G( s ) =
1 e −2 s 4s + 4s + 1 4
a partir de la respuesta escalón del mismo. Comparar la respuesta impulsonal real con la respuesta estimada. Solución Para poder estimar la respuesta impulsional del sistema a partir del sistema real se debe disponer de datos muestreados. Aplicando la función step es posible simular la respuesta de un sistema continuo a un escalón.
7
>> %sistema sin retardo puro >> sys1=tf(1,[4 4 1]); >> %aproximamos el retardo puro por un sistema de orden 10 >> [nd,dd]=pade(2,10); >> sys2=tf(nd,dd); >> % realizamos el producto de las dos funciones de transferencia >> sys=series(sys1,sys2); >> %simulamos el sistema de forma continua y muestreamos cada segundo >> t=0:0.1:20; >> td=0:20; >> y=step(sys,t); >> yd=step(sys,td); >> subplot(211),plot(t,y,td,yd,’x’),title(‘Respuesta escalón’), xlabel(‘tiempo’) >> % las etapas indicadas hasta este punto podrían ser realizadas directamente en >> SIMULINK >> >> >> >> >>
%estimamos respuesta impulso con la ecuación (2.38) g=yd(2:21)-yd(1:20); yi=impulse(sys,t); subplot(212),plot(t,yi),hold on,bar(td,g,0.1), title(‘Respuesta impulsional’),xlabel(‘tiempo’) axis([0 25 0 0.2]) Respuesta escalón 1 0.8 0.6 0.4 0.2 0 0
2
4
6
8
10 12 14 tiempo Respuesta impulsional
16
18
20
0.2 0.15 0.1 0.05 0 0
5
10
15
20
25
tiempo
Problema 2.7 Se desea utilizar el análisis de correlación para estimar la respuesta impulso del sistema descrito en el problema 2.5. Con el fin de realizar un estudio comparativo de lo explicado en el tema se propone comparar la respuesta impulso real del sistema con la estimada en los siguientes casos: a) Cuando v(t)=0 y la señal de excitación es un ruido blanco de amplitud 1. b) Cuando v(t) es un ruido blanco, no correlacionado con la entrada, de variancia 0.3. La señal excitación es la misma que en el caso anterior. Solución a) y b) En primer lugar se van a generar las señales de excitación y perturbación con las que se va a simular el sistema. Generaremos 500 datos con un muestreo de 1 seg. >> t=(0:500)’; >> randn(‘seed’,5);
8
>> >> >> >>
u=randn(size(t)); randn(‘seed’,0); e=sqrt(0.3)*randn(size(t)); subplot(2,2,1), plot(t,u,t,e,’—‘), title(‘Evolución temporal de u(t) y e(t)’)
Para evaluar las señales diseñadas se hará un estudio de correlación y correlación cruzada. La función de MATLAB covf permite realizar este estudio. R=covf(Z,M); donde: Z es una matriz de N*nz, generalmente Z=[y u] o el conjunto de señales a evaluar; M es el valor máximo de retardo para el cual se quiere evaluar la función de covariancia. R es la función de covariancia E zi(t)*z j(t+k), k tiene los valores de 1 a M. >> R=covf([e u],20); >> subplot(2,2,3),plot(R(1,:)), title(‘Autocorrelación de la señal e(t)’) >> subplot(2,2,4),plot(R(4,:)), title(‘Autocorrelación de la señal u(t)’) >> subplot(2,2,2),plot(R(2,:)), title(‘Correlación cruzada E e(t)*u(t+k)’) Evolución temporal de u(t) y e(t)
Correlación cruzada
4
0.15
2
0.1
0
0.05
-2
0
-4
-0.05 0
200
400
600
0
Autocorrelación de la señal e(t)
5
10
15
20
Autocorrelación de la señal u(t)
0.4
1
0.3 0.5
0.2 0.1
0
0 -0.1
0
5
10
15
-0.5
20
0
5
10
15
20
Una vez generadas la señales y evaluadas, procedemos a la simulación del sistema. >> y1=dlsim([0 1 0.5],[1 –1.5 0.7],u); >> y2=y1+e; >> ti=0:50; >> yimp=dimpulse([0 1 0.5],[1 –1.5 0.7],ti); Para estimación de la respuesta impulsional utilizaremos la función cra de MATLAB, además de calcular la función impulso indica con una confianza del 99% el intervalo de valores a partir de los cuales dos señales pueden ser consideradas no correlacionadas. [ir,R,cl] = cra(z,M,na,plot); en donde: z = [y u], matriz de datos M = 50, número de retardos a evaluar la función de covariancia na = 0, orden del filtre AR a aplicar para blanquear las entradas
9
plot = 2 o 1, plot = 0 visualización de los resultados obtenidos; plot = 1, dibuja la función de transferencia impulso; y plot = 2, dibuja las covariancias y función impulso. ir = respuesta impulso estimada, ir(1)=g(0) R= R(:,1) retardos; R(:,2) función de covariancia de la y(t); R(:,3) función de covariancia de la u(t); R(:,4) función de correlación cruzada entre u(t) i y(t); cl = nivel de confianza >>
[IR,R,cl]=cra([y1 u], 50,0,2);
Covf for y
Covf for u
20
1
15 0.5
10 5
0
0 -5 -50
0
-0.5 -50
50
Correlation from u to y 3
0.4
2
0.2
1
0
0
0
50
Impulse response estimate
0.6
-0.2 -50
0
-1 -50
50
0
50
Para comparar la respuesta impulsional estimada con la real, podemos aplicar el siguiente comando: >> plot(ti,IR,ti,yimp,’—‘),title(‘Respuesta impulso comparación, real (--) y estimada (-)’) En la gráfica obtenida se observa que la respuesta impulsional estimada se aproxima a la real en los primeros datos M> [IRn,Rn,cln]=cra([y2 u], 50,0,2);
Covf for y
Covf for u
20
1
15 0.5
10 5
0
0 -5 -50
0
-0.5 -50
50
Correlation from u to y 3
0.4
2
0.2
1
0
0
0
50
Impulse response estimate
0.6
-0.2 -50
0
-1 -50
50
0
50
La comparación entre la respuesta impulso real y la estimada será: >> plot(ti,IRn,ti,yimp,’—‘),title(‘Respuesta impulso comparación, real (--) y estimada (-)’)
11
Respuesta impulso comparación, real (--) y estimada (-) 2.5
2
1.5
1
0.5
0
-0.5
-1
0
5
10
15
20
25
30
35
40
45
50
La respuesta obtenida con ruido es muy similar a la obtenida sin ruido.
Problema 2.8 Utilizando las técnicas frecuenciales del análisis de Fourier y el análisis espectral determinar la respuesta frecuencial del sistema descrito en el problema 2.5. Como señal de excitación utilizar una señal multisinusoidal de características: 100 armónicos, 0.002 de frecuencia fundamental y 3 periodos. Como señal perturbación utilizar un ruido blanco de variancia 5. Solución Archivo solP2_8. Obsérvese que la respuesta frecuencial se estima correctamente, como resultado de aplicar la función empírica ETFE (figura 5) como el análisis espectral (figura 6). La figura 7 muestra la respuesta frecuencial teórica, resultado de utilizar el comando dbode.
Nota: al utilizar en este caso una señal periódica se ha utilizado directamente la transformada de Fourier para la estimación de la función de transferencia empírica (respuesta frecuencial) tanto a partir del análisis frecuencial como espectral. En el caso en que las señales utilizadas no sean periódicas, deben utilizarse directamente los comandos spa y/o etfe.
12
Ejercicios y problemas propuestos E2.1 Se quiere identificar un modelo matemático de un horno tubular que calienta el aire a partir de una resistencia eléctrica. La entrada al proceso es la tensión suministrada a la resistencia calefactora y la salida es la señal enviada por el sensor de temperatura situado a la mitad de este horno. Como señal de excitación se ha utilizado una señal binaria. Las señales de entrada y salida se muestran en las siguientes figuras: 8
entrada
6
4
2 240
250
260
250
260
270 tiempo
280
290
300
280
290
300
salida 0.5 0.4 0.3 0.2 0.1 0 240
270 tiempo
Se pide que a la vista de los resultados se comenten los tratamientos previos que deberían realizarse antes de proceder a la identificación del modelo. E2.2. Se desea identificar el modelo discreto de un proceso. Partiendo de un ensayo preliminar se ha determinado que el intervalo de frecuencias que describen el proceso es: [fmin , fmax ] = [0.5, 4 ] Hz. Comentar: - ¿A partir de que ensayos preliminares es posible determinar este intervalo? - ¿Cuál es el periodo de adquisición de datos que utilizarías para identificar este proceso? - Si es menester filtrar los datos con un filtro antialias, ¿que frecuencia de corte escogerías para el diseño de este filtro? E2.3- Ajustar por el método de Küpfmüller y Strejc un modelo que se ajuste a la respuesta escalón del problema 2.6. Comparar los resultados del modelo determinado con el modelo real. E2.4.- Estimar la respuesta impulso del problema 2.7 pero en el caso en que se disponga de una entrada coloreada. Utilizar para ello el comando cra seleccionando el orden adecuado del filtro, na, para blanquear la señal de entrada..
13
E2.5- Variar las características de la señal de entrada (frecuencia fundamental y número de armónicos) y el nivel de ruido del problema 2.8 y observar como se modifica la respuesta frecuencial del sistema. E2.6- Se desea estimar la respuesta frecuencial de un sistema, para ello se ha excitado dicho sistema con una señal de entrada no periódico u(t) obteniéndose como resultado del mismo la señal y(t), ambas se encuentran el fichero adjunto E26.mat. Utilizar las funciones de Matlab etfa y spa para estimar la función de transferencia empírica a partir del análisis de Fourier y del análisis espectral, respectivamente. Comparar la respuesta frecuencial utilizando ambos métodos y variando la longitud de la ventana (M o 1/γ), justificar los resultados obtenidos. Podríais indicar de que tipo de sistema se trata?, cual es su ancho de banda?. E2.7- Partiendo de los mismos datos del ejercicio anterior, E26.mat, estimar la respuesta impulso del sistema. A partir de los resultados de que tipo de sistema se trata?. Justificar la respuesta. E2.8- A partir de los datos de entrada y salida de un sistema, se ha estimado la función de transferencia impulso obteniéndose los resultados mostrados en la figura. Respuesta impulso estimada 1
0.8
0.6
0.4
0.2
0
-0.2 0
5
10 retards
15
20
Indicar la información podemos obtener a partir de ella. Justificar la respuesta. E2.9- La función de transferencia empírica obtenida a partir del estudio espectral de un sistema excitado mediante un ruido blanco, se observa en la figura siguiente: AMPLITUDE PLOT
1 01
10
10
0
-1
1 0- 2 -2 10
-1
1 0 frequency (rad/sec) 1 0
0
10
1
PHASE PLOT
0
-200 phase
-400 10 -2
1 0- 1
1 00 frequency (rad/sec)
14
1 01
¿Que frecuencia de muestreo escogeríais para dicho sistema? Justificar la respuesta. Indicar también de forma aproximada el tipo de sistema de que se trata.
E2.10-. La función de auto covarianza de la entrada y la covarianza cruzada entre la entrada y la salida están representadas en las siguientes figuras: Ifunció d’auto-covariança
funció de covariança creuada
1
0.2
0.8
0.15
0.6
0.1
0.4
0.05
0.2
0
0
-0.05
-0.2 0
5
10 lags
15
20
-0.1 0
Sabríais deducir la función de transferencia impulso?.
15
5
10 lags
15
20
View more...
Comments