Manual dos Exercícios MATLAB - DT
Transcrição
Manual dos Exercícios MATLAB - DT
UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO Métodos Não Paramétricos Exercı́cios MATLAB IA-856 Identificação e Filtragem arquivo trans naoparametrico05.tex 8 de maio de 2006 1 EA-856 - Métodos Não Paramétricos exercı́cio completo utilizando as rotinas do toolbox: System Identification rotinas: declaração de conjunto de dados e tratamento: iddata.m, detrend.m, identificação não-paramêtrica da resposta ao impulso: impulse.m, cra.m, identificação não-paramêtrica via resposta em freqüência: spa.m, etfe.m. rotinas auxiliares do toolbox: Control System rotinas: zpk.m, tf.m, c2d.m, bode.m. problema: Obter a identificação não-paramétrica determinando-se a resposta ao impulso e a reposta em freqüência de um sistema de interesse, a partir de um conjunto de dados de entrada (u) e saı́da medida (y ), conforme o diagrama de blocos: e Gr (s) u Gu (s) y Figura 1: u – entrada acessı́vel; e – ruı́do; y – saı́da medida 2 EA-856 - Exercı́cios MATLAB Sistema na forma: Y (s) = Gu (s)U (s) + Gr (s)E(s) ou, Y (z) = Gu (z)U (z) + Gr (z)E(z), forma amostrada onde Gu (z) = Nr (z) Nu (z) , Ge (z) = Du (z) Dr (z) Fases do Experimento: Fase 1: Acionar o sistema com entradas apropriadas para capturar a dinâmica no conjunto de dados [y(k)u(k)], k = 1, . . . , N Fase 2: Obtenção do modelo não-paramétrico (resposta ao impulso) Fase 3: Obtenção do modelo não-paramétrico (resposta em freqüência) Fase 4: Verificação do modelo obtido frente ao modelo “ideal”utilizado no Simulink fase 1: Sistema escolhido Gu (s) = 272 (s + 4)(s2 + 4s + 68) Ruı́do é filtrado pela f.t. dada por Ge (s) = 30s + 2400 s2 + 100s + 2400 clear all, close all Gu=tf([272], conv([1 4],[1 4 68])) % Sistema Continuo a ser Identificado impulse(Gu), pause % resposta ao impulso step(Gu), pause % resposta ao degrau 3 EA-856 - Métodos Não Paramétricos Step Response Impulse Response 1.4 3.5 3 1.2 2.5 1 2 Amplitude Amplitude 0.8 1.5 1 0.6 0.5 0.4 0 0.2 −0.5 −1 0 0 0.5 1 1.5 2 2.5 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 1.2 1.4 1.6 1.8 Time (sec) Time (sec) Figura 2: Resposta ao impulso e ao degrau de Gu Step Response Impulse Response 1.4 0.16 0.14 1.2 0.12 1 0.1 0.8 Amplitude Amplitude 0.08 0.06 0.6 0.04 0.02 0.4 0 0.2 −0.02 −0.04 0 0 0.5 1 1.5 2 Time (sec) 2.5 0 0.2 0.4 0.6 0.8 1 Time (sec) Figura 3: Resposta ao impulso e ao degrau da versão amostrada de Gu Geração dos dados amostrados. Escolheu-se o perı́odo de amostragem Ts = 0, 05 s. e a entrada de excitação do sistema. % Sistema amostrado Ts=0.05 Gud=c2d(Gu,Ts) impulse(Gud), pause step(Gud), pause % % % % periodo de amostragem converte sistema contı́nuo --> discreto plota a resposta ao impulso plota a resposta ao degrau Assim a f.t. Gu (z) fica definida como: 4 EA-856 - Exercı́cios MATLAB >> Gud= zpk(Gud) Zero/pole/gain: 0.0050891 (z+3.348) (z+0.2446) ----------------------------------(z-0.8187) (z^2 - 1.667z + 0.8187) Sampling time: 0.05 Com essa escolha, o sistema amostrado global fica sendo: (z − 0.8187)(z 2 − 1.667z + 0.8187)Y (z) = 0.0050891(z + 3.348)(z + 0.2446)U (z) + Ef (z) (z 2 − 0.1851z + 0.006738)E (z) = (0.8219z − 0.000275)E(z) f e podemos reconhecer os polinômios na forma Du (z)Y (z) = Nu (z)z −n U (z) + Ef (z) Dr (z)Ef (z) = Nr (z)E(z) 5 EA-856 - Métodos Não Paramétricos implementação no Simulink: 30s+2400 s2+100s+2400 Band-Limited White Noise Transfer Fcn3 68 1 Saída Contínua 4 s2+4s+68 s+4 Transfer Fcn2 Transfer Fcn1 1 In1 1 1 2 Entrada Amostrada z Unit Delay z 3 Saída Amostrada Unit Delay1 Figura 4: Diagrama Simulink do Sistema com entrada comandada e ruı́do. Table 1. Continuous White Noise. Block Properties Name Cov Ts seed Band-Limited White Noise [pr1] 0.005 [23341] Table 2. Inport Block Properties Name Port PortDimensions In1 1 -1 SampleTime -1 Defined In Sum1 Table 4. Outport Block Properties Name Port OutputWhenDisabled Entrada Amostrada 2 held Saı́da Amostrada 3 held Saı́da Contı́nua 1 held Table 5. Sum Block Properties Name IconShape Inputs Sum round ++ InputSameDT off Table 6. TransferFcn Block Properties Name Numerator Denominator Transfer Fcn1 [68] [1 4 68] Transfer Fcn2 [4] [1 4] Transfer Fcn3 [30 2400] [1 100 2400] VectorParams1D on InitialOutput [] [] [] Table 3. Mux Block Properties Name Inputs DisplayOption Mux 2 bar Used By Sinal Amostrado Sinal Amostrado Sinal Contı́nuo OutDataTypeMode Inherit via internal rule AbsoluteTolerance auto auto auto Table 7. Unit Delay Block Properties Name SampleTime Unit Delay Ts Unit Delay1 Ts atenção: 1) No bloco “digital clock”adotar como parâmetro o perı́odo de amostragem Ts . 2) Na janela de simulação, acesse “Simulation”, depois “Configuration Parameters”, selecione “Data Importa/Export”. No quadro “Save Options” desabilite a opção “Limit data points to last:” 6 EA-856 - Exercı́cios MATLAB fase 2: Simulação e geração do conjunto de dados para identificação do sistema esco- lhido definir a entrada do sistema a ser identificado: Figura 5: Diagrama Simulink com entrada definida pelo “Signal Builder”. Valores definidos no Signal Buider % tempo de simulaç~ ao = 90s.: Axes > change Time Range ... Min. time 0, Max. time 90 % sinal PBRN: Signal > New > Pseudo random noise ... Frequency 10.0, Upper value +5, Lower Value -5 O sistema está pronto para ser simulado e gerar a seqüência de dados durante 90s. %% Define os dados de inicializaç~ ao do sistema %% No Diagrama Simulink: %% Simulation > Simulation Parameters ... Stop Time: Tsim %% Band-Limited White Noise > Noise Power: [pr1] clear, close all Tsim=90; % tempo total de simulaç~ ao Ts=0.07; % periodo de amostragem pr1=0.05; % potencia do sinal gaussiano de faixa limitada sim(’nome_do_arquivo_simulink’) 7 EA-856 - Métodos Não Paramétricos % para obter somente um valor do ponto amostrado tdisc=yout(:,1); % vetor do tempos utilizados pela rotina de integraç~ ao tadi=[tdisc; tdisc(max(size(tdisc)))]; tatr=[0;tdisc]; ind=find(tadi>tatr); tdisc=tdisc(ind); % vetor do tempos contendo amostras espaçadas de Ts % definiçao dos sinais amostrados espaçados de Ts udisc=yout(ind,2); ydisc=yout(ind,3); 10 5 0 −5 −10 0 2 4 6 8 10 12 14 16 18 20 0 2 4 6 8 10 12 14 16 18 20 10 5 0 −5 −10 Figura 6: Saı́da y e entrada u em 20 s. fase 3: Obtenção do modelo não-paramétrico (resposta ao impulso) É necessário remover valores constantes dos dados de entrada e saı́da antes de processá-los. %%pre-processamento dos dados udisc=udisc-mean(udisc); ydisc=ydisc-mean(ydisc); % elimina a média dos dados 8 EA-856 - Exercı́cios MATLAB primeiro método: resposta ao impulso pelo método da convolução % identifica a primeira amostra para a qual a entrada n~ ao é nula tini=min(find(udisc(:,1)~=0)); tfin=max(size(tdisc)); % define o último valor de interesse da amostra U=[]; % inicializaçao da matriz de entradas J=60; % numero total de amostras a ser consideradas na % identificaç~ ao da resposta ao impulso (= J+1) % ciclos de construç~ ao da matriz U a partir da definiç~ ao das linhas taux=tini; while taux<=tfin && (taux-J)<1 U=[U; [udisc(taux:-1:1)’ zeros(1,-taux+J+1)]]; taux=taux+1; end while taux<=tfin U=[U; udisc(taux:-1:(taux-J))’]; taux=taux+1; end % gera a estimativa da resposta ao impulso mask=tini:(taux-1); h1=U\ydisc(mask); figure, stem(0:Ts:(Ts*J),h1/Ts), hold on, plot(t,h,’-r’) % h1 resposta ao impulso estimada pelo método da convoluç~ ao % h resposta ao impulso original do sistema 9 EA-856 - Métodos Não Paramétricos fase 4: Verificação do modelo obtido frente ao modelo “ideal” metodo da convoluçao 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 −1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Figura 7: Resposta ao impulso estimada pelo método da convolução e a curva original. segundo método: resposta ao impulso pelo método da convariância Iremos utilizar a estrutura de dados apropriada ao toolbox de identificação. % declara uma estrutura de dados tendo ydisc como saı́da % e udisc como entrada: dat1=iddata(ydisc,udisc,Ts); datm1=detrend(dat1,’constant’); % elimina a media dos dados e dá nome aos bois set(datm1,’InputName’,’entrada de acionamento’,’OutputName’,’torque em Nm’) A rotina Matlab covf serve para estimar as funções de correlação existentes na estrutura de dados dat1 contendo o vetor [y u] já pré-processado. J=60; R1=covf(datm1,J+1); % no. de máximo de defasagem das funç~ oes de correlaç~ ao % a considerada na estimativa % calcula a matriz de auto-covariancias e covari^ ancias 10 EA-856 - Exercı́cios MATLAB % cruzadas figure, plot(R1’) title(’Funcao de Auto-Correlacao e Correlacao Cruzada’) legend(’r_{yy}’,’r_{uy}’,’r_{yu}’,’r_{uu}’) Funcao de Auto−Correlacao e Correlacao Cruzada 25 ryy ruy ryu ruu 20 15 10 5 0 −5 0 10 20 30 40 50 60 70 Figura 8: Funções de auto-correlação e correlação cruzadas de y e u. Para a construção da matriz de autocorrelação Ruu na forma adequada: ruu (0) ruu (1) ruu (2) ruu (0) ruu (1) ruu (1) r (2) ruu (1) ruu (0) = uu. . .. .. .. . ruu (F ) ruu (F − 1) ruu (F − 2) Ruu ··· ruu (F ) · · · ruu (F − 1) · · · ruu (F − 2) .. ... . ··· ruu (0) a rotina Matlab toeplitz deve ser usada. Ruy1=R1(2,:); % funcao de correlacao cruzada entre u e y Ru1=R1(4,:); % funcao de autocorrelacao de u MRu1=toeplitz(Ru1) % produz a matriz de autocorrelacao de u, p.ex.: >>MRu1 = 11 EA-856 - Métodos Não Paramétricos 1.0000 -0.0120 -0.0050 0.0040 0.0050 0.0060 -0.0120 1.0000 -0.0120 -0.0050 0.0040 0.0050 -0.0050 -0.0120 1.0000 -0.0120 -0.0050 0.0040 0.0040 -0.0050 -0.0120 1.0000 -0.0120 -0.0050 0.0050 0.0040 -0.0050 -0.0120 1.0000 -0.0120 0.0060 0.0050 0.0040 -0.0050 -0.0120 1.0000 Passo final: estimação e verificação h1=MRu1\Ruy1’; % estima a resposta ao impulso h1 com J+1 amostras fase 4: Verificação do modelo obtido frente ao modelo “ideal” metodo da convariancia 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 −1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Figura 9: Resposta ao impulso estimada pelo método da covariância e a curva original. 12 EA-856 - Exercı́cios MATLAB outros métodos disponı́veis no toolbox de identificação: Rotinas cra e impulse J=60; % ordem do filtro FIR/no. de amostras da resposta ao impulso - 1 % estimacao da resposta ao impulso: metodo 1 (rotina cra) na=15; % ordem do filtro branqueador figure, h2=cra(datm1,J,na,2); % determinaç~ ao da resposta ao impulso & plots Covf for filtered y Covf for prewhitened u 5 25 4 20 3 15 2 10 1 5 0 0 −1 −100 −50 0 50 100 −5 −100 Correlation from u to y (prewh) −50 0 50 100 Impulse response estimate 0.5 3 0.4 2 0.3 0.2 1 0.1 0 0 −0.1 −0.2 −100 −50 0 50 100 −1 −100 −50 0 50 100 Figura 10: Funções de auto-correlação e correlação cruzadas de y e u filtrados e estimativa da resposta ao impulso dada pela rotina cra. % outras formas gráficas: figure, h2=cra(datm1,J,na,1) % resposta com intervalo de confiança 13 EA-856 - Métodos Não Paramétricos Impulse response estimate 3 2.5 2 1.5 1 0.5 0 −0.5 −1 0 10 20 30 lags 40 50 60 Figura 11: Resposta ao impulso estimada pela pela rotina cra com intervalo de confiança. figure, stem(0:Ts:(Ts*(size(h2)-1)),h2/Ts), hold on, plot(t,h,’-r’) metodo cra do Matlab 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 −1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Figura 12: Resposta ao impulso estimada pela pela rotina cra comparação com a curva original. 14 EA-856 - Exercı́cios MATLAB % estimacao da resposta ao impulso: metodo 2 (rotina impulse) h3=impulse(datm1); % determinacao da resposta ao impulso figure, impulse(datm1,’sd’,1); % plot com intervalos de confiança From entrada de acionamento 3 2.5 To torque em Nm 2 1.5 1 0.5 0 −0.5 −1 −2 −1 0 1 2 3 4 Figura 13: Estimativa da resposta ao impulso com região de confiança: rotina impulse. 15 EA-856 - Métodos Não Paramétricos % extrai as 1as. M amostras nao antecipativas da resposta ao impulso h3 % para efeito de comparaç~ ao: h3=h3.B((-h3.InputDelay+1):(h3.nb)); h3=h3(:); figure, stem(0:Ts:(Ts*(size(h3)-1)),h3/Ts), hold on, plot(t,h,’-r’) metodo impulse do Matlab 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 −1 0 0.5 1 1.5 2 2.5 3 3.5 4 Figura 14: Resposta ao impulso estimada pela pela rotina impulse e a curva original. 16 EA-856 - Exercı́cios MATLAB domı́nio da freqüência exercı́cios utilizando as rotinas do toolbox: System Identification rotinas: spa.m, etfe.m, bode.m Utilizamos os mesmos dados obtidos na fase 1 do experimento no domı́nio do tempo. A rotina spa.m é um procedimento de resposta em freqüência através de análise espectral O parâmetro M na rotina controla o tamanho da janela de dados utilizados. Se M = [ ] utiliza-se o valor default da rotina que é min(length(DATA)/10,30) M=[]; % tamanho da janela usada no cálculo modf=spa(ddat,M); % gera o modelo em freqü^ encia a partir dos dados ddat % resposta em frequencia de gud com intervalo de confiança: figure(6), clf bode(modf,3) From entrada de acionamento to torque em Nm 0 10 −1 Amplitude 10 −2 10 −3 10 −4 10 −1 10 0 10 1 10 2 10 400 Phase (degrees) 300 200 100 0 −100 −200 −300 −1 10 0 10 1 10 2 10 Figura 15: Respostas em freqüência: rotina spa com intervalo de confiança. 17 EA-856 - Métodos Não Paramétricos % espectro do ruı́do com intervalo de confiança: figure(7), clf bode(modf(’noise’),3) Disturbance spectrum for output torque em Nm 0 10 −1 10 −2 10 −3 10 −1 10 0 10 1 10 2 10 Figura 16: Estimativa do espectro de freqüência do ruı́do: rotina spa com intervalo de confiança. segundo método freqüencial: rotina etfe A rotina etfe, calcula a transformada discreta de Fourier utilizando FFT (fast Fourier transform) %% procedimento de estimacao da resposta em frequencia via FFT M=12; %tamanho da janela usada no calculo modfe=etfe(ddat,M); Para comparação traçamos as figuras a seguir, utilizando os comandos: figure(8),clf bode(modf,modfe) legend(’rotina spa M=[]’,’rotina etfe M=12’) figure(9),clf bode(Gud) 18 EA-856 - Exercı́cios MATLAB From entrada de acionamento to torque em Nm 0 10 −1 Amplitude 10 −2 10 rotina spa M=[] rotina etfe M=12 −3 10 −4 10 −1 10 0 1 10 10 2 10 400 Phase (degrees) 300 200 100 0 −100 −200 −300 −1 10 0 1 10 10 2 10 (a) Bode Diagram 0 Magnitude (dB) −10 −20 −30 −40 −50 −60 0 Phase (deg) −90 −180 −270 −360 −450 0 1 10 10 Frequency (rad/sec) (b) Figura 17: (a) Comparação das respostas obtidas pelas rotina: spa (azul) com a etfe (em verde). Tamanho de janela M indicado. (b) Reposta em freqüência do sistema “ideal”gud. 19 EA-856 - Métodos Não Paramétricos resultado dos exercı́cios propostos na 1a. aula Parâmetros Iniciais: • Tempo de amostragem Ts 0,15 s. • Tempo de Simulação 10 s. 2 4 4 3.5 3.5 3 3 2.5 2.5 2 2 1.5 1.5 1 1 0.5 0.5 0 0 1.5 1 0.5 0 -0.5 Time offset: 0 0 1 2 3 4 5 6 7 8 9 10 Time offset: 0 -0.5 0 1 2 3 4 5 6 7 8 9 10 -0.5 0 1 2 3 4 5 6 7 8 9 10 Figura 18: Sinal dos Osciloscópios Time offset: 0 (a) Osciloscópio com o Sinal Medido e o Sinal Perfeito (não acessı́vel); (b) Osciloscópio com os Sinais Amostrados de Saı́da e Entrada (truncado, amplitude do impulso = 10; (c) Osciloscópio com os Sinais Amostrados de Saı́da e Entrada após filtragem do sinal discreto. Caracterı́sticas do Filtro: Filtro discretizado utilizando o método zoh (zero-order hold), com quatro polos em tempo contı́nuo com valores -12, -12.5, -13, -13.5 20 EA-856 - Exercı́cios MATLAB metodo da resposta ao impulso 1.2 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1 Ts=0.15, Ampl. do Impulso=10 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 0 1 2 3 4 5 6 Figura 19: Resultado do Método da Resposta ao Impulso. • Alteração do Experimento: Amplitude do Impulso é alterado de 10 para 30. Resultado: A relação sinal ruı́do é melhorada. 21 EA-856 - Métodos Não Paramétricos metodo da resposta ao impulso 1.2 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1 Ts=0.15, Ampl. do Impulso=30 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 0 1 2 3 4 5 6 Figura 20: Resultado do Método da Resposta ao Impulso, com impulso de maior amplitude. • Alteração do Experimento: Entrada de Impulso é substituı́do por um Sinal Binário Pseudo-aleatório (BPRS) de amplitude ±5, Frequência = 100 (10 por s.). 22 EA-856 - Exercı́cios MATLAB metodo da resposta ao impulso com entrada PRBS Tsim=10 s 1 sem filtro filtro polos=−12,−12.5,−13 e −13.5 Ts=0.10, Ampl. do Sinal PBRS=+−5 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 −0.4 0 1 2 3 4 5 6 Figura 21: Resultado do Método da Resposta ao Impulso, com sinal BPRS. 23 EA-856 - Métodos Não Paramétricos método de covariância metodo da covariancia 1.2 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1 Ts=0.15, Ampl. do Impulso=10 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 0 1 2 3 4 5 6 Figura 22: Resultado do Método da Covariância: dados ajustados como nas Figs. 1 e 2 do método da resposta ao impulso. 24 EA-856 - Exercı́cios MATLAB metodo da covariancia com entrada PRBS Tsim=10 s 1.2 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1 Ts=0.10, Ampl. do Sinal PBRS=+−5 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 −0.4 0 1 2 3 4 5 6 Figura 23: Resultado do Método da Covariância, com sinal BPRS. Dados ajustados como na Fig. 4. • Alteração do Experimento: Tempo de Simulação Tsim é aumentado de 10s. para 30s. 25 EA-856 - Métodos Não Paramétricos metodo da resposta ao impulso com entrada PRBS Tsim=30 s 1.2 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1 Ts=0.10, Ampl. do Sinal PBRS=+−5 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 0 1 2 3 4 5 6 Figura 24: Resultado do Método da Resposta ao Impulso: Tsim = 30s. metodo da covariancia com entrada PRBS Tsim=30 s 1.2 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1 Ts=0.10, Ampl. do Sinal PBRS=+−5 0.8 Gerador de Ruidos: potencia 0.0001, sampling time=0.01 0.6 0.4 0.2 0 −0.2 0 1 2 3 4 5 6 Figura 25: Resultado do Método da Covariância: Tsim = 30s. • Alteração do Experimento: Potência do Ruı́do é aumentada de 0,0001 para 0,005. 26 EA-856 - Exercı́cios MATLAB metodo da resposta ao impulso com entrada PRBS Tsim=30 s 1.4 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1.2 1 Ts=0.10, Ampl. do Sinal PBRS=+−5 0.8 Gerador de Ruidos: potencia 0.005, sampling time=0.01 0.6 0.4 0.2 0 −0.2 −0.4 0 1 2 3 4 5 6 Figura 26: Resultado do Método da Resposta ao Impulso: Potencia do ruı́do aumentada. metodo da covariancia com entrada PRBS Tsim=30 s 1.4 sem filtro filtro polos=−12,−12.5,−13 e −13.5 1.2 1 Ts=0.10, Ampl. do Sinal PBRS=+−5 0.8 Gerador de Ruidos: potencia 0.005, sampling time=0.01 0.6 0.4 0.2 0 −0.2 −0.4 0 1 2 3 4 5 6 Figura 27: Resultado do Método da Covariância: Potencia do ruı́do aumentada.