Identificação de Sistemas

33
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Engenharia Elétrica IDENTIFICAÇÃO DE SISTEMAS NÃO LINEARES Prof. Marcio José Cunha Identificação de um forno elétrico utilizando modelos NARMAX Frederico Duarte Fagundes Luis Paulo Fagundes Uberlândia 2014

description

Trabalho final de Disciplina de identificação de sistemas. Identificação de um forno elétrico.

Transcript of Identificação de Sistemas

  • UNIVERSIDADE FEDERAL DE UBERLNDIA

    Faculdade de Engenharia Eltrica

    IDENTIFICAO DE SISTEMAS NO LINEARES

    Prof. Marcio Jos Cunha

    Identificao de um forno eltrico utilizando modelos

    NARMAX

    Frederico Duarte Fagundes

    Luis Paulo Fagundes

    Uberlndia

    2014

  • 2

    Resumo

    A identificao de sistemas tem sido usado como uma importante ferramenta para

    simulao, predio e controle de sistemas dinmicos. As dificuldades inerentes ao

    modelamento faz com que este tipo de tcnica seja ideal para modelamento de

    sistemas complexos. Neste contexto, o presente trabalho tem por objetivo realizar a

    identificao de um forno eltrico utilizando modelos NARMAX, bem como

    apresentar uma descrio detalhada dos passos tomados para a identificao do

    sistema.

    Palavras-chave: Identificao de sistemas, modelos NARMAX, modelos caixa preta, forno eltrico.

    Abstract

    The system identification have been used as an important tool for simulation,

    prediction and control of dynamical systems. The intrinsics difficulties in

    modeling,causes this kind of technique be ideal for modeling complex systems. In

    this context, this work aims to make the identification of an electric oven using

    NARMAX models and presents a detailed description of the steps taken for system

    identification.

    Keywords: System identification, NARMAX models, black box models, electric oven.

  • 3

    Sumrio

    Introduo.....................................................................................................Pg 04

    Desenvolvimento..........................................................................................Pg 07

    Concluso.....................................................................................................Pg 24

    Referncias Bibliogrficas............................................................................Pg 25

    Apndice A (Cdigo fonte do programa).....................................................Pg 26

    Apndice B (Tabela com regressores candidatos)........................................Pg 27

    Apndice C (Funes usadas estimao do modelo)...................................Pg 28

  • 4

    1 - Identificao de sistemas

    Qualquer sistema, considerado como uma relao de causas e efeitos pode ser

    representado matematicamente. Os modelos matemticos possibilitam, por exemplo, a

    simulao do comportamento do sistema sem a necessidade da construo fsica do mesmo.

    Para que isso seja possvel, necessrio que o modelo seja fiel ao sistema (BILLINGS, 2013;

    LJUNG, 1999; NELLES, 2001).

    Uma abordagem, para obteno do modelo matemtico, o modelamento analtico

    (BILLINGS, 2013), ou modelagem caixa branca (AGUIRRE, 2007; NELLES, 2001), onde

    um conhecimento profundo do sistema a ser modelado necessrio. O modelo obtido com

    base na diviso do sistema em subsistemas (LJUNG, 1999), onde feita uma anlise dos

    fenmenos fsico-qumicos envolvidos e em relaes matemticas conhecidas.

    A identificao de sistemas estuda tcnicas alternativas de modelagem matemtica.

    O modelo obtido com a medio das entradas e sadas do processo, por isso pouco ou

    nenhum conhecimento prvio do sistema necessrio. So tcnicas aplicveis a qualquer

    sistema e so relativamente rpidas (AGUIRRE, 2007; BILLINGS, 2013; LJUNG, 1999).

    Um modelo apenas uma representao aproximada do sistema. Por isso, no h um

    modelo que represente todas as caractersticas de um sistema real, compreendendo, sim,

    algumas caractersticas. Um modelo com muitas caractersticas algo intangvel.

    Desenvolvendo modelos de forma aproximado, so feitas simplificaes. O modelo ento

    testado e, se for considerado inadequado, reavaliado (AGUIRRE, 2007). Ljung explica bem

    esse conceito:

    Um sistema real um objeto de um tipo diferente dos nossos modelos matemticos.

    De certa maneira, h uma impenetrvel, porm transparente tela entre nosso mundo

    de descries matemticas e o mundo real. Ns podemos olhar atravs dessa janela e

    comparar certos aspectos do sistema fsico com sua descrio matemtica, mas ns

    nunca podemos estabelecer uma conexo exata entre eles. A questo de

    susceptibilidade natural para descrio matemtica possui aspectos filosficos

    profundos, e em termos prticos ns temos que ter uma viso mais pragmtica dos

    modelos. Nossa aceitao dos modelos deve ser mais guiada pela utilidade do que

    pela verdade. Entretanto, ns podemos ocasionalmente usar um conceito de

    sistema verdadeiro, definido em termos de um modelo matemtico. Essa fico

    til para comparar mtodos de identificao e entender suas propriedades. Em certos

    contextos ns assumimos que os dados observados foram gerados de acordo com

  • 5

    regras matemticas bem-definidas, o que com certeza uma idealizao (LJUNG

    1999, p. 6, traduo nossa).

    Para as tcnicas de identificao de sistemas, as etapas, de um modo geral, so

    (LJUNG, 1999):

    1. Testes dinmicos e coleta de dados: dados so necessrios para gerar o

    modelo e muitas vezes no esto disponveis, sendo necessrio testes para

    extrair informao dinmica do sistema. Problemas comuns nesta etapa

    ocorrem na escolha dos sinais de excitao, na execuo do teste e na escolha

    do tempo de amostragem.

    2. Representao matemtica: escolha do tipo de modelo a ser utilizado, sua

    estrutura, estimao dos parmetros, etc. Essas escolhas so feitas com base

    nas caractersticas do sistema e no conhecimento e experincia de quem

    projeta o modelo.

    3. Validao do modelo: com o modelo obtido, ou o conjunto deles, verifica-se

    o seu desempenho. feita uma validao para atestar que o(s) modelo(s)

    incorporam as caractersticas desejadas. A obteno de modelos diferentes

    til para comparao, visto que algum pode ter desempenho melhor, em

    alguns aspectos, que outros.

    Os possveis motivos que podem levar um modelo a ser considerado inadequado, na

    terceira etapa, so (LJUNG, 1999):

    O procedimento numrico falho em achar o melhor modelo para o critrio

    estabelecido;

    O critrio no foi bem estabelecido;

    Escolha inapropriada de modelos, pois nenhum foi considerado satisfatrio;

    Os dados no foram informativos o suficiente para a seleo dos modelos.

    A maior parte da aplicao da identificao consiste, de fato, em encontrar esses

    problemas. Isso feito de forma iterativa, guiada pela informao prvia e os problemas

    encontrados (LJUNG, 1999). A FIGURA 1.1 resume o processo de identificao.

  • 6

    Figura 1.1 O ciclo de identificao de sistemas

    Fonte: adaptado de Ljung 1999

    Com base no exposto, o presente trabalho tem por objetivo realizar a identificao do

    modelo de um forno eltrico que foi apresentado em (AGUIRRE, 2007).

    O forno eltrico utilizado para a identificao consiste em uma caixa metlica com

    dimenses de 15x10x31 cm de alumnio com espessura de 2 mm. Uma lmpada eltrica de

    200W como elemento de aquecimento.

    O fato do forno no ser isolado termicamente faz com que variaes na temperatura

    ambiente afetem seu comportamento dinmico.

    Como sensor de temperatura foi utilizado um resistor de coeficiente de temperatura

    negativo (NTC) ligado em um conversor A/D de 12 bits (RODRIGUES, 1996) ligado a um

    computador, a figura 1.2 mostra um esquema do sistema utilizado para realizar a

    identificao.

  • 7

    Figura 1.2 Diagrama em blocos do sistema utilizado para identificao

    Fonte: RODRIGUES, 1996.

    Neste trabalho ser utilizado um modelo NARMAX e o algoritmo de Golub-

    Householder para determinao da estrutura e dos parmetros simultaneamente. A seguir ser

    descrito os procedimentos realizados para identificao do sistema, bem como os resultados.

    2 - Desenvolvimento

    Passo 1 Coleta dos Dados

    O primeiro passo para a identificao de um sistema a coleta dos dados que possam

    fornecer informaes para a identificao. No presente caso a coleta no foi realizada, pois se

    partiu de duas massas de dados fornecidas juntamente com o livro Introduo Identificao

    de Sismteas Tcnicas Lineares e No-lineares aplicadas a Sistemas Reais, de Luis Antnio

    Aguirre. Contudo ainda assim algum tratamento sobre os dados coletados foi necessrio.

    Para coletar os dados do sistema deve-se utilizar um sinal de entrada suficientemente

    amplo em frequncia e amplitude para que possa assim, excitar as dinmicas de interesse

    (RODRIGUES, 1996). No sistema em estudo a entrada era o sinal de tenso aplicado ao

    TRIAC e a sada a temperatura medida pelo sensor NTC.

    No caso do forno, foi utilizado um rudo quantizado como sinal de excitao, isto ,

    um algoritmo sorteia uma amplitude e mantm esta constante durante um tempo pr-

    estabelecido, e ento sorteia um novo valor e o mantm pelo mesmo perodo de tempo, a

    figura 2.1 e 2.2 mostra o sinal de entrada e o respectivo sinal de temperatura para as duas

    massas utilizadas na identificao F0407 e F0307.

  • 8

    Figura 2.1 Massa de dados F0407, sinal de entrada em azul e sinal de sada em vermelho.

    Fonte: Adaptado de (RODRIGUES, 1996).

    Figura 2.2 Massa de dados F0307, sinal de entrada em azul e sinal de sada em vermelho.

    Fonte: Adaptado de (RODRIGUES, 1996).

    O sinal foi amostrado com perodo de amostragem de 70 segundos, contudo o que se

    observa na figura 2.1 no eixo das abscissas a quantidade de amostras e no o tempo.

    A maior parte das variveis de interesse em sistemas reais contnua no tempo,

    contudo os computadores digitais apresentam ciclos de trabalho de forma que o sinal deve ser

  • 9

    amostrado em tempos discretos. Assim o perodo entre duas amostras consecutivas

    denominado tempo de amostragem Ts.

    O tempo de amostragem deve ser suficientemente curto para manter as caractersticas

    do sinal original, na prtica a frequncia de amostragem normalmente escolhida entre 5 e 10

    vezes maior do que a maior frequncia de interesse (AGUIRRE, 2007).

    Outro problema relacionado a tempos de amostragem muito pequenos em relao

    matriz de regressores. Os elementos dessa matriz incluem termos do tipo

    ) ( ) ) ... e ) ( ) ), observe que se Ts se aproxima de zero,

    ) se torna muito prximo de ( ) ), de forma que as colunas da matriz de

    regressores tendem a se tornar linearmente dependentes.

    Como nem sempre se tem o conhecimento de qual a maior frequncia de interesse,

    (AGUIRRE, 2007) prope um critrio simples que tem dado uma boa indicao da frequncia

    de amostragem a ser usada em diversas situaes reais.

    Este critrio consiste em determinar uma taxa com de forma que )

    ). Para isso faz-se uso de um intervalo de amostragem bem pequeno para que y*(k) se

    torne um sinal superamostrado. Em seguida determina-se a funo de autocovarincia linear e

    no-linear. Tal procedimento feito para determinar o grau de correlao (redundncia) entre

    observaes adjacentes do sinal y*(k) (AGUIRRE, 2007).

    As funes de autocovarincia linear e no-linear so determinadas respectivamente

    da seguinte maneira:

    ) ) ) ) ) ) (2.1)

    ) ) ) ) ) ) (2.2)

    Com estas funes determinadas encontra-se o mnimo das duas e , o menor

    desses mnimos passar a ser o valor de trabalho, .

    Este valor de trabalho avaliado de forma a satisfazer o seguinte critrio,

    (2.3)

    Caso seja satisfeita a condio (2.3), o sinal est adequadamente amostrado, caso

    contrrio selecionada uma taxa pela qual o sinal original decimado e novamente

    calculada as funes de autocovarincia, e o novo valor de avaliado de acordo com (2.3).

    Na prtica, a autocovarincia pode ser determinada da seguinte maneira,

    )

    ) )) ) ))

    (2.4)

  • 10

    Um programa em matlab para determinar a autocovarincia linear e no linear pode

    ser encontrado no apndice A.

    Para o caso do forno, utilizando a massa de dados F0407, obteve-se os seguintes

    grficos de autocovarincia linear e no linear.

    Figura 2.3 Autocovarincia linear do sinal de sada do forno utilizando a massa de dados

    F0407. Fonte: Elaborao prpria.

    Figura 2.4 Autocovarincia No-Linear do sinal de sada do forno utilizando a massa de

    dados F0407. Fonte: Elaborao prpria.

  • 11

    O primeiro mnimo desses dois grficos ocorre em aproximadamente = 28, o que no

    satisfaz a condio 2.3. Assim o sinal deve ser decimado novamente, at que 2.3 seja

    satisfeita.

    O sinal foi decimado utilizando = 3, e as seguintes funes de autocovarincia linear

    e no linear foram obtidas.

    Figura 2.5 Autocovarincia Linear do sinal de sada do forno decimado pelo fator de = 3

    utilizando a massa de dados F0407. Fonte: Elaborao prpria.

    Figura 2.6 Autocovarincia No-Linear do sinal de sada do forno decimado pelo fator de

    = 3 utilizando a massa de dados F0407. Fonte: Elaborao prpria.

  • 12

    Agora possvel observar que o mnimo das autocovarincia linear e no linear ocorre

    prximo de = 15, valor este que satisfaz a condio 2.3. Assim o sinal amostrado ser

    decimado = 3, o que corresponde a dizer que o sinal foi amostrado a uma taxa de 210 s.

    Para se ter uma noo da importncia de adequar o sinal escolhendo uma taxa de

    decimao apropriada, o sistema foi identificado sem utilizar uma taxa de decimao,

    simulado e comparado com a massa de dados F0307. Observe a figura 2.7.

    Figura 2.7 Simulao de um sistema identificado sem utilizar uma taxa de decimao

    adequada. Fonte: Elaborao prpria.

    A simulao foi inicializada com os 22 primeiros dados de sada da massa de dados

    F0307, isto , a simulao foi efetivamente feita a partir do vigsimo terceiro termo, no

    grfico pode-se observar a coincidncia das duas curvas at a vigsima terceira amostra,

    posteriormente os dados divergem.

    Observa-se que o sinal apesar de acompanhar a dinmica apresenta certa discrepncia,

    posteriormente ser apresentada a simulao utilizando uma taxa de decimao apropriada e

    ento ser possvel comparar os resultados.

    Passo 2 Determinao de No-Linearidades

    Com o intuito de descobrir qual modelo se adequaria melhor para a identificao, um

    modelo linear ou um modelo no linear, foi aplicado um teste de determinao de no

    linearidade, apresentado em (BILLINGS, 2013).

  • 13

    O teste consiste em calcular a funo de correlao cruzada do sinal de sada e do sinal

    de sada ao quadrado. De forma que a seguinte condio seja satisfeita:

    ) ) ) ) ) ) ,

    sistema linear.

    (2.5)

    ) ) ) ) ) ) ,

    sistema no linear.

    (2.6)

    Figura 2.8 Teste de no linearidade utilizando funo de correlao cruzada.

    Fonte: Elaborao prpria.

    Como pode ser observado na figura 2.8, a correlao do sistema no permaneceu

    dentro do intervalo de confiana, o que indica que a correlao do sinal de entrada e entrada

    ao quadrado no igual a zero, assim conclui-se que o sistema apresenta no linearidades, e o

    modelo a ser considerado para efeito de identificao deve ser no linear.

    Passo 3 Deteco da estrutura

    No presente trabalho optou-se por trabalhar com uma estrutura chamada NARMAX

    polinomial.

    Um modelo polinomial NARMAX pode ser representado por

    ) [ ) ( ) ) ) )

    )] )

    (2.7)

    Sendo ) os efeitos que no podem ser bem representados por .

  • 14

    Matematicamente essa funo pode ser expandida por:

    ) ) ) )

    (2.8)

    Sendo que

    (2.9)

    E o limite superior se o somatrio se refere a fatores do tipo ) ou para

    fatores do tipo ).

    Como exemplo, iremos expandir a equao 2.8 utilizando l=3.

    A expanso ser feita termo a termo deixando o somatrio

    para o fim. Assim tem-se

    para m=0 e p=0

    Observe que o parntese omitido por ser correspondente a (n1...,n0), e os produtrios

    no existem por irem de 1 at 0. Assim para m=0 e p=0 s temos

    .

    Para m=1 e p=0, tem-se:

    ) )

    O produtrio de ) zero por ir de 1 at 0, temos assim o produtrio de

    ).

    Note que o somatrio ainda no foi apresentado, como se tem apenas um termo

    regressor, e esse termo se refere a o limite superior do produtrio ser tambm referente ,

    logo se tem:

    ) )

    Para m=1 e p=1,

    ) )

    Como o somatrio de u seria de 2 at 1, este no existir. Observando que agora o

    termo avaliado y, o limite superior ser , logo:

  • 15

    ) )

    Para m=2 e p=0,

    ) ) )

    E como agora existe dois termos de u, ter-se-, dois somatrios referentes a .

    ) ) )

    Para m=2 e p=1,

    ) ) )

    E desta vez como os termos se referem a y e a u, os limites superiores sero referentes

    a e .

    ) ) )

    Para m=2 e p=2,

    ) ) )

    Para m=3 e p=0,

    ) ) ) )

    E neste caso trs somatrios referentes .

    ) ) ) )

    Para m=3 e p=1,

    ) ) ) )

    Para m=3 e p=2,

    ) ) ) )

    Para m=3 e p=3

  • 16

    ) ) ) )

    Assim a funo ) seria a soma de todos estes passos.

    A expanso de um modelo NARMAX necessria para descobrir quais termos sero

    candidatos a fazer parte da identificao, obviamente alguns critrios devem ser seguidos para

    selecionar dentre os termos candidatos, quais faro efetivamente parte do modelo final.

    Deve-se atentar durante o processo de expanso, que alguns termos podem vir a

    repetir, assim um termo que seja multiplicado por uma constante , poderia ser agrupado

    com um outro termo idntico, que fosse multiplicado por uma outra constante , gerando

    um termo de constante ( )

    Para o projeto do forno, foi utilizando um modelo NARMAX com l=3 e

    A expanso no ser apresentada neste trabalho, mas foram encontrados 136 termos

    regressores, e aps uma racionalizao dos termos repetidos, os termos candidatos foram

    reduzidos para 84 termos, e so apresentados no anexo B.

    O critrio utilizado para determinar quais termos faria parte do modelo a ser

    identificado, foi o critrio ERR, apresentado em (AGUIRRE, 2007).

    O critrio da taxa de reduo de erro (ERR) utiliza os algoritmos de mnimos

    quadrados ortogonais para determinar a contribuio de cada regressor ao modelo.

    Segundo (Aguirre, 2007), a soma dos valores quadrticos de y(k) pode ser definida

    como,

    . (2.10)

    Esta equao nos diz que a parcela no explicada pelos regressores igual soma dos valores

    quadrticos do vetor de resduos ).

    Assim define-se a taxa de reduo de erro (ERR) como,

    . (2.11)

    A equao 2.8 pode ser entendida da seguinte maneira, quanto mais prximo

    estiver de , maior ser o valor de , atingindo um mximo de 1, o que

    significa dizer que o termo i, em questo, explica totalmente os dados de y.

    Logo para selecionar os termos que faro parte da estrutura, so utilizados aqueles que

    apresentam maior ERR.

    Passo 4 Estimao dos parmetros

  • 17

    Para realizar a estimao dos parmetros do modelo, foi utilizado o mtodo dos

    mnimos quadrados e o algoritmo de Golub-Householder (Aguirre, 2007), para determinao

    da taxa de reduo do erro.

    Definindo-se a equao matricial,

    (2.12)

    Onde,

    [

    ) )

    )

    ]; ;

    [

    ]

    ; [

    ) )

    )

    ]

    (2.13)

    e

    [

    ) )

    )

    ], i=1,2,...,

    (2.14)

    Na equao 2.12, representa a matriz de regressores, representa os parmetros

    estimados e representa o erro de estimao, isto , o quanto o estimado difere do y real.

    Assim considerando uma matriz de regressores candidatos , como,

    ) ) ) ) ) ) ) (2.15)

    a matriz de regressores montada utilizando as sadas medidas do sistema, e seria dada

    como,

    [ ) ) ) ) ) )

    ) )

    ) ) ) )

    ) ) ) )

    ) ) ) )

    ) ) ) )

    ) ) ) ) ]

    (2.16)

    Onde as sadas ao instante anterior a 0 so consideradas 0.

    Considerando a equao

    (2.17)

    Para se determinar , pode-se fazer.

    (2.18)

    (2.19)

  • 18

    Assim para a estimao dos parmetros do modelo, foi utilizado um algoritmo

    presente no anexo C, que faz uso da funo myhouse que tem por objetivo determinar os

    termos regressores que sero utilizados para a estimao do modelo. A funo myhouse foi

    retirada dos arquivos de (Aguirre, 2007), e apresentada tambm no anexo C.

    A estimao dos parmetros juntamente com o critrio de ERR, forneceu o seguinte

    modelo para o forno eltrico,

    ) ) ) ) ) )

    ) )

    ) )

    ) ) )

    ) )

    (2.20)

    A simulao deste sistema ser apresentada posteriormente.

    Passo 5 Validao do Modelo Identificado

    No presente trabalho optou-se por realizar a validao analisando os resduos de

    identificao.

    Segundo (Aguirre, 2007) a principal condio para que o estimador quadrtico no

    seja polarizado que o erro seja um rudo branco, o que consiste em dizer que o erro deve ser

    aleatrio.

    O erro consiste na parte dos dados de identificao que o modelo no conseguiu

    explicar, assim se o erro for completamente aleatrio, isto , se o erro for um rudo branco, o

    modelo ter explicado tudo que havia para explicar, e o que no explicado devido a erros

    aleatrios. Em contrapartida, caso o erro seja um rudo colorido, isto um indicio de que o

    modelo no conseguiu explicar toda dinmica do sistema.

    Uma forma de analisar se o erro rudo branco por anlise de correlao cruzada.

    Contudo para sistemas no lineares, de se esperar que haja correlaes no lineares, assim

    definido um conjunto de testes em (BILLINGS, 2013), que devem ser satisfeitos para validar

    o modelo, segue abaixo as condies.

    ) ) ) )

    ) ) )

    ) [ ) ) ) )]

    ) [ ) ) ) )]

    ) ) ) ) )

    (2.21)

  • 19

    Sendo ) a funo impulso unitrio.

    Um ponto muito importante para a anlise de resduos, que ela considera o

    desempenho do modelo no conjunto de dados de identificao, visto que os resduos so

    definidos como o erro do preditor de um passo frente (Aguirre, 2007).

    A seguir so apresentados os resultados dos testes 2.21, sobre o modelo identificado

    2.20.

    O clculo da funo de correlao cruzada foi feita utilizando a funomyccf obtida

    no livro (Aguirre, 2007), e apresentada no anexo C.

    Figura 2.9 Teste de correlao cruzada . Em azul modelo identificado e vermelho o

    modelo identificado em (Rodrigues, 1996).

    Fonte: Elaborao prpria.

    Figura 2.10 Teste de correlao cruzada . Em azul modelo identificado e vermelho o

    modelo identificado em (Rodrigues, 1996).

    Fonte: Elaborao prpria.

  • 20

    Figura 2.11 Teste de correlao cruzada . Em azul modelo identificado e vermelho o

    modelo identificado em (Rodrigues, 1996).

    Fonte: Elaborao prpria.

    Figura 2.12 Teste de correlao cruzada . Em azul modelo identificado e vermelho o

    modelo identificado em (Rodrigues, 1996).

    Fonte: Elaborao prpria.

    Figura 2.13 Teste de correlao cruzada ). Em azul modelo identificado e vermelho o

    modelo identificado em (Rodrigues, 1996).

    Fonte: Elaborao prpria.

    Pela anlise de resduos, observa-se que a figura 2.9 muito semelhante a funo

    impulso unitrio, o que satisfaz a condio 2.21, as figuras 2.10, 2.11 e 2.13 apresentam um

    pequeno intervalo que est fora do intervalo de confiana, o que poderia levar a afirmao de

  • 21

    que a funo de correlao cruzada no zero, contudo tal intervalo muito pequeno para se

    fazer tal considerao.

    Outro ponto interessante que apesar do modelo obtido neste trabalho ser bastante

    diferente do modelo obtido em (Rodrigues, 1996), a anlise de resduos mostrou que ambos

    os modelos so vlidos.

    A anlise estatstica mostrou que os resduos so aleatrios e, portanto no houve

    polarizao do estimador, contudo no comprova se o modelo capaz de reproduzir a

    dinmica do forno eltrico, para isso ser necessrio uma simulao dinmica, o que foi feito

    no prximo passo.

    Passo 6 Simulao Dinmica

    Para simulao de um modelo, deve-se utilizar um conjunto de dados diferentes

    daqueles utilizados na identificao do modelo (Aguirre, 2007), assim os dados para

    simulao foi a massa de dados F0307.

    Existem diversas formas utilizadas para simular um sistema. Uma forma comum, mas

    que no fornece bons resultados para o processo de identificao a predio um passo a

    frente, neste tipo de simulao o valor estimado sempre identificado utilizando os dados

    medidos de um passo anterior, fazendo com que os dados estimados sejam muito prximos

    dos valores medidos. Esse tipo de simulao pode levar a enganos e fazer com que se pense

    que o modelo melhor do que realmente . A figura 2.14 apresenta uma simulao um passo

    a frente.

    Figura 2.14 Predio de estados um passo a frente. Em azul os dados medidos, em verde a

    simulao de um modelo um passo a frente, e em vermelho a simulao infinitos passos a frente.

    Fonte: Elaborao prpria.

  • 22

    A forma mais adequada de simular um sistema a fim de observar que o mesmo

    consegue satisfazer as dinmicas do sistema, simul-lo utilizando predio infinitos passos

    a frente. Neste tipo de predio o modelo inicializado com algumas condies iniciais, e

    aps algumas estimaes serem feitas, todas as outras estimaes so feitas utilizando dados

    de estimao, isto , as estimaes passadas so incorporadas ao processo de estimao dos

    passos futuros. Na figura 2.15 foi feito a simulao do sistema identificado e comparado com

    o sistema identificado em (Rodrigues, 1996).

    Figura 2.15 Simulao Infinitos passos a frente.

    Fonte: Elaborao prpria.

    Observa-se que o modelo obtido neste trabalho e o modelo obtido em (RODRIGUES,

    1996) se aproximam, apesar de serem modelos diferentes.

  • 23

    Concluso

    As tcnicas de identificao de sistemas utilizadas neste trabalho foram bastante eficientes para identificao de sistemas no lineares. Foi possvel observar que todas as fases

    de identificao de sistemas apresentam uma srie de cuidados que devem ser respeitados

    para uma correta identificao.

    Algumas etapas comuns da identificao de sistemas como o agrupamento de termos e

    a incluso de resduos com o intuito de reduzir a polarizao no foram incorporados ao

    presente trabalho, o que sugere que resultados melhores que os apresentados na figura 2.15

    podem ainda ser obtidos. Como sugesto para trabalhos futuros sugere-se a utilizao destas

    etapas para identificao do modelo, e anlise do quanto estas etapas podem melhorar um

    modelo a ser indetificado.

  • 24

    Bibliografia

    Aguirre, L. A. (2007). Introduo identificao de sistemas: tcnicas lineares e no lineares aplicadas

    a sistemas reais (3 ed.). Belo Horizonte: UFMG.

    BILLINGS, S. A. (2013). Nonlinear System Identification: NARMAX Methods in the Time, Frequency,

    and Spatio-Temporal Domains. Wiley.

    LJUNG, L. (1999). System Identification: Theory for the User (2. ed.). Englewood: PTR Prentice Hall.

    NELLES, O. (2001). Nonlinear System Identification: From Classical Approaches to Neural Networks

    and Fuzzy Models. Berlim, Alemanha: Springer Science & Business Media.

    RODRIGUES, G. G. (s. d.). Identificao de Sistemas Dinmicos No-Lineares Utilizando Modelos

    NARMAX Polinomiais Aplicao a Sistemas Reais. Dissertao de Mestrado, UFMG, Belo

    Horizonte.

  • 25

    Apndice A (Funes de autocorrelao)

    Autocovarincia Linear %O valor de 84 corresponde ao atraso, e deve ser sempre menor ou igual ao %tamanho dos dados. for k=1:100 y1=y(1:100); %a quantidade de y's utilizado igual ao tamanho do

    atraso ruu(k)=0; media=sum(y)/250; %O valor que a soma dos vetores divido, deve ser sempre igual ao %tamanho total dos dados que esto sendo utilizados, assim se o vetor y %tivesse tamanho de 250 amostras, a mdia seria sob este valor. for i=1:100-k ruu(k)=ruu(k)+(y1(i)-media).*(y1(i+k)-media); end end

    S=sum(y);

    S=sqrt(s);

    ruu=ruu/(S*S); %Normalizao dos valores da autocovarincia Autocovarincia No-Linear %O valor de 84 corresponde ao atraso, e deve ser sempre menor ou igual ao %tamanho dos dados. for k=1:84 y1=y(1:84); %a quantidade de y's utilizado igual ao tamanho do atraso ruuNL(k)=0; %O valor que a soma dos vetores divido, deve ser sempre igual ao %tamanho total dos dados que esto sendo utilizados, assim se o vetor y %tivesse tamanho de 250 amostras, a mdia seria sob este valor. media=sum(y)/84; for i=1:84-k ruuNL(k)=ruuNL(k)+((y1(i).^2)-media^2).*((y1(i+k).^2)-media^2); end end S=sum(y.^2);

    S=sqrt(S);

    ruuNL=ruuNL/(S*S); %Normalizao dos valores da autocovarincia

  • 26

    Anexo B (Regressores candidatos a fazer parte do modelo)

    Termos de primeiro grau Termos de Segundo Grau Termos de terceiro grau

    u(k-1) u(k-1).^2 u(k-1).^3

    u(k-2) u(k-1)*u(k-2) u(k-1).^2*u(k-2)

    u(k-3) u(k-1)*u(k-3) u(k-1).^2*u(k-3)

    y(k-1) u(k-2).^2 u(k-1)*u(k-2).^2

    y(k-2) u(k-2)*u(k-3) u(k-1)*u(k-2)*u(k-3)

    y(k-3) u(k-3).^2 u(k-1)*u(k-3).^2

    u(k-2).^3

    y(k-1)*u(k-1) u(k-2).^2*u(k-3)

    y(k-1)*u(k-2) u(k-2)*u(k-3).^2

    y(k-1)*u(k-3) u(k-3).^3

    y(k-2)*u(k-1)

    y(k-2)*u(k-2) y(k-1)*u(k-1).^2

    y(k-2)*u(k-3) y(k-1)*u(k-1)*u(k-2)

    y(k-3)*u(k-1) y(k-1)*u(k-1)*u(k-3)

    y(k-3)*u(k-2) y(k-1)*u(k-2).^2

    y(k-3)*u(k-3) y(k-1)*u(k-2)*u(k-3)

    y(k-1)*u(k-3).^2

    y(k-1).^2 y(k-2)*u(k-1).^2

    y(k-1)*y(k-2) y(k-2)*u(k-1)*u(k-2)

    y(k-1)*y(k-3) y(k-2)*u(k-1)*u(k-3)

    y(k-2).^2 y(k-2)*u(k-2).^2

    y(k-2)*y(k-3) y(k-2)*u(k-2)*u(k-3)

    y(k-3).^2 y(k-2)*u(k-3).^2

    y(k-3)*u(k-1).^2

    y(k-3)*u(k-1)*u(k-2)

    y(k-3)*u(k-1)*u(k-3)

    y(k-3)*u(k-2).^2

    y(k-3)*u(k-2)*u(k-3)

    y(k-3)*u(k-3).^2

    y(k-1).^2*u(k-1)

    y(k-1).^2*u(k-2)

    y(k-1).^2*u(k-3)

    y(k-1)*y(k-2)*u(k-1)

    y(k-1)*y(k-2)*u(k-2)

    y(k-1)*y(k-2)*u(k-3)

    y(k-1)*y(k-3)*u(k-1)

    y(k-1)*y(k-3)*u(k-2)

    y(k-1)*y(k-3)*u(k-3)

    y(k-2).^2*u(k-1)

    y(k-2).^2*u(k-2)

  • 27

    y(k-2).^2*u(k-3)

    y(k-2)*y(k-3)*u(k-1)

    y(k-2)*y(k-3)*u(k-2)

    y(k-2)*y(k-3)*u(k-3)

    y(k-3).^2*u(k-1)

    y(k-3).^2*u(k-2)

    y(k-3).^2*u(k-3)

    y(k-1).^3

    y(k-1).^2*y(k-2)

    y(k-1).^2*y(k-3)

    y(k-1)*y(k-2).^2

    y(k-1)*y(k-2)*y(k-3)

    y(k-1)*y(k-3).^2

    y(k-2).^3

    y(k-2).^2*y(k-3)

    y(k-2)*y(k-3).^2

    y(k-3).^3

    Anexo C (Programas e funes para estimao dos parmetros do modelo) load F0407.DAT; %carrega dados de entrada e sada no workspace do matlab. dados= F0407; %define dados. u=dados(:,1); %coluna um os dados de entrada uident=u(1:3:250); %decimao, para que y(k-1) no seja aproximadamente

    igual a y(k-2), faz-se a decimao do sinal. %que consiste em pegar as medidas a cada 3 amostra.

    y=dados(:,2); %coluna dois os dados de sada. yident=y(1:3:250); %Faz-se yest igual a y para poder pegar as 22 primeiras amostras como estados inicial yest0=y; %Inicializando os dados que sero utilizados posteriormente

    para simulao do modelo.

    axes(handles.axes1); %seta o axes1 como ativo cla(handles.axes1); %limpa o axes1 axes(handles.axes2); %seta o axes1 como ativo cla(handles.axes2); %limpa o axes1

    % Montar matriz de regressores reg1=ones(81,1); % constante reg2=uident(3:83); % u(k-1) reg3=uident(2:82); % u(k-2) reg4=uident(1:81); % u(k-3) reg5=yident(3:83); % y(k-1) reg6=yident(2:82); % y(k-2)

  • 28

    reg7=yident(1:81); % y(k-3) reg8=reg2.^2; % u(k-1).^2 reg9=reg2.*reg3; % u(k-1)*u(k-2) reg10=reg2.*reg4; % u(k-1)*u(k-3) reg11=reg3.^2; % u(k-2).^2 reg12=reg3.*reg4; % u(k-2)*u(k-3) reg13=reg4.^2; % u(k-3).^2 reg14=reg5.*reg2; % y(k-1)*u(k-1) reg15=reg5.*reg3; % y(k-1)*u(k-2) reg16=reg5.*reg4; % y(k-1)*u(k-3) reg17=reg6.*reg2; % y(k-2)*u(k-1) reg18=reg6.*reg3; % y(k-2)*u(k-2) reg19=reg6.*reg4; % y(k-2)*u(k-3) reg20=reg7.*reg2; % y(k-3)*u(k-1) reg21=reg7.*reg3; % y(k-3)*u(k-2) reg22=reg7.*reg4; % y(k-3)*u(k-3) reg23=reg5.^2; % y(k-1).^2 reg24=reg5.*reg6; % y(k-1)*y(k-2) reg25=reg5.*reg7; % y(k-1)*y(k-3) reg26=reg6.^2; % y(k-2).^2 reg27=reg6.*reg7; % y(k-2)*y(k-3) reg28=reg7.^3; % y(k-3).^2 reg29=reg2.^2; % u(k-1).^3 reg30=(reg2.^2).*reg3; % u(k-1).^2*u(k-2) reg31=(reg2.^2).*reg4; % u(k-1).^2*u(k-3) reg32=reg2.*reg3.^2; % u(k-1)*u(k-2).^2 reg33=reg2.*reg3.*reg4; % u(k-1)*u(k-2)*u(k-3) reg34=reg2.*reg4.^2; % u(k-1)*u(k-3).^2 reg35=reg3.^3; % u(k-2).^3 reg36=(reg3.^2).*reg4; % u(k-2).^2*u(k-3) reg37=reg3.*reg4.^2; % u(k-2)*u(k-3).^2 reg38=reg4.^3; % u(k-3).^3 reg39=reg5.*reg2.^2; % y(k-1)*u(k-1).^2 reg40=reg5.*reg2.*reg3; % y(k-1)*u(k-1)*u(k-2) reg41=reg5.*reg2.*reg4; % y(k-1)*u(k-1)*u(k-3) reg42=reg5.*reg3.^2; % y(k-1)*u(k-2).^2 reg43=reg5.*reg3.*reg4; % y(k-1)*u(k-2)*u(k-3) reg44=reg5.*reg4.^2; % y(k-1)*u(k-3).^2 reg45=reg6.*reg2.^2; % y(k-2)*u(k-1).^2 reg46=reg6.*reg2.*reg3; % y(k-2)*u(k-1)*u(k-2) reg47=reg6.*reg2.*reg4; % y(k-2)*u(k-1)*u(k-3) reg48=reg6.*reg3.^2; % y(k-2)*u(k-2).^2 reg49=reg6.*reg3.*reg4; % y(k-2)*u(k-2)*u(k-3) reg50=reg6.*reg4.^2; % y(k-2)*u(k-3).^2 reg51=reg7.*reg2.^2; % y(k-3)*u(k-1).^2 reg52=reg7.*reg2.*reg3; % y(k-3)*u(k-1)*u(k-2) reg53=reg7.*reg2.*reg4; % y(k-3)*u(k-1)*u(k-3) reg54=reg7.*reg3.^2; % y(k-3)*u(k-2).^2 reg55=reg7.*reg3.*reg4; % y(k-3)*u(k-2)*u(k-3) reg56=reg7.*reg4.^2; % y(k-3)*u(k-3).^2 reg57=(reg5.^2).*reg2; % y(k-1).^2*u(k-1) reg58=(reg5.^2).*reg3; % y(k-1).^2*u(k-2) reg59=(reg5.^2).*reg4; % y(k-1).^2*u(k-3) reg60=reg5.*reg6.*reg2; % y(k-1)*y(k-2)*u(k-1) reg61=reg5.*reg6.*reg3; % y(k-1)*y(k-2)*u(k-2) reg62=reg5.*reg6.*reg4; % y(k-1)*y(k-2)*u(k-3) reg63=reg5.*reg7.*reg2; % y(k-1)*y(k-3)*u(k-1) reg64=reg5.*reg7.*reg3; % y(k-1)*y(k-3)*u(k-2) reg65=reg5.*reg7.*reg4; % y(k-1)*y(k-3)*u(k-3) reg66=(reg6.^2).*reg2; % y(k-2).^2*u(k-1) reg67=(reg6.^2).*reg3; % y(k-2).^2*u(k-2)

  • 29

    reg68=(reg6.^2).*reg4; % y(k-2).^2*u(k-3) reg69=reg6.*reg7.*reg2; % y(k-2)*y(k-3)*u(k-1) reg70=reg6.*reg7.*reg3; % y(k-2)*y(k-3)*u(k-2) reg71=reg6.*reg7.*reg4; % y(k-2)*y(k-3)*u(k-3) reg72=(reg7.^2).*reg2; % y(k-3).^2*u(k-1) reg73=(reg7.^2).*reg3; % y(k-3).^2*u(k-2) reg74=(reg7.^2).*reg4; % y(k-3).^2*u(k-3) reg75=(reg5.^3); % y(k-1).^3 reg76=(reg5.^2).*reg6; % y(k-1).^2*y(k-2) reg77=(reg5.^2).*reg7; % y(k-1).^2*y(k-3) reg78=reg5.*reg6.^2; % y(k-1)*y(k-2).^2 reg79=reg5.*reg6.*reg7; % y(k-1)*y(k-2)*y(k-3) reg80=reg5.*reg7.^2; % y(k-1)*y(k-3).^2 reg81=reg6.^3; % y(k-2).^3 reg82=(reg6.^2).*reg7; % y(k-2).^2*y(k-3) reg83=reg6.*reg7.^2; % y(k-2)*y(k-3).^2 reg84=reg7.^3; % y(k-3).^3

    %Declarao da matriz psi. psi=[reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 reg12 reg13

    reg14 reg15 reg16 reg17 reg18 reg19 reg20 reg21 reg22 reg23 reg24 reg25

    reg26 reg27 reg28 reg29 reg30 reg31 reg32 reg33 reg34 reg35 reg36 reg37

    reg38 reg39 reg40 reg41 reg42 reg43 reg44 reg45 reg46 reg47 reg48 reg49

    reg50 reg51 reg52 reg53 reg54 reg55 reg56 reg57 reg58 reg59 reg60 reg61

    reg62 reg63 reg64 reg65 reg66 reg67 reg68 reg69 reg70 reg71 reg72 reg73

    reg74 reg75 reg76 reg77 reg78 reg79 reg80 reg81 reg82 reg83 reg84]; vec=yident(4:84); %define vec como as amostras que se deseja identificar

    do vetor de medidas Psi=[psi vec]; %De acordo com o algoritmo de Golub-Householder

    (Aguirre pgina 430), monta-se a matriz PSI como sendo a matriz de

    regressores e a ultima coluna com y

    [A,err,piv]=myhouse(Psi,84); %Funo que clcula a taxa de reduao do %erro, define o vetor piv que contm quais %colunas dos regressores sero escolhidas %e faz a transformao de householder sobre %a matriz A, pode ser observada logo %abaixo.

    np=9; % numero de parametros no modelo final Psit=Psi(:,piv(1:np)); %define a matriz Psit com base na matriz Psi, com

    todas as linhas e somente as colunas que foram selecionadas pelo vetor piv

    teta=inv(Psit'*Psit)*Psit'*vec; %Determina os parmetros teta utilizando

    mnimos quadrados. teta2=[0.44551;0.57773;-0.63628;0.4860;-1.14580e-6;-9.97760e-5;-2.92710e-

    5;7.88310e-3;7.43860e-8] ;%O parmetro teta2 foi retirado de (Aguirre,

    2007) e foi utilizado apenas para comparao.

    %Simulao 1 passo a frente yUPAF=Psit*teta; yUPAFAguirre=Psit*teta;

    %Simulao Infinitos passos a frente usando dados de identificao for k=23:250

  • 30

    yest0(k)=0.778979244469561*yest0(k-1)+0.264968587335836*yest0(k-2)-

    0.202230245793142*u(k-2)-0.002505004275601*u(k-1).^2-1.470916581337107e-

    05*yest0(k-3)*u(k-2).^2+0.424915554330944*u(k-1)-0.002167793408121*yest0(k-

    2)*yest0(k-3)-4.409058775720922e-05*u(k-1)*u(k-3).^2+3.854810662214531e-

    05*yest0(k-1).^2*u(k-2); end

    %Plota os grficos axes(handles.axes1); plot(yest0(1:250,1),'r','DisplayName','yest(1:250,1)','YDataSource','yest(1

    :250,1)'); hold on plot(y(1:250,1),'black','DisplayName','y(1:250,1)','YDataSource','yest(1:25

    0,1)'); plot(u(1:250,1),'g','DisplayName','y(1:250,1)','YDataSource','yest(1:250,1)

    ');

    %dados para validao load F0307.dat dados2= F0307; %define dados u2=dados2(:,1); %coluna um os dados de entrada u2ident=u2(1:3:250); %Decimao das amostras, a identificao no foi feita

    usando as 250 amostras, mas sim a cada 3 amostras.

    y2=dados2(:,2); %coluna dois os dados de sada y2ident=y2(1:3:250); %Decimao das amostras, a identificao no foi

    feita usando as 250 amostras, mas sim a cada 3 amostras.

    y2est0=y2; %Inicializar as 22 primeiras condies iniciais. y2est=y2; %Inicializar as 22 primeiras condies iniciais.

    %Simulao Infinitos passos a frente usando dados de validao

    for k=23:250 y2est0(k)=0.778979244469561*y2est0(k-1)+0.264968587335836*y2est0(k-2)-

    0.202230245793142*u2(k-2)-0.002505004275601*u2(k-1).^2-1.470916581337107e-

    05*y2est0(k-3)*u2(k-2).^2+0.424915554330944*u2(k-1)-

    0.002167793408121*y2est0(k-2)*y2est0(k-3)-4.409058775720922e-05*u2(k-

    1)*u2(k-3).^2+3.854810662214531e-05*y2est0(k-1).^2*u2(k-2); end %%Modelo linear nl391 retirado do livro do aguirre for k=23:250 y2est(k)=0.44551*y2est(k-1)+0.57773*y2est(k-2)-0.63628*u2(k-2)+0.4860*u2(k-

    1)-1.14580e-6*(y2est(k-1).^2).*u2(k-1)-9.97760e-5*(u2(k-1).^2).*u2(k-3)-

    2.92710e-5*y2est(k-3).^3+7.88310e-3*y2est(k-2).*u2(k-2)+7.43860e-

    8*(y2est(k-3).^2).*u2(k-3); end axes(handles.axes2); plot(y2est0(1:250,1),'r','DisplayName','yest(1:250,1)','YDataSource','yest(

    1:250,1)'); hold on plot(y2est(1:250,1),'blue','DisplayName','yest(1:250,1)','YDataSource','yes

    t(1:250,1)'); plot(y2(1:250,1),

    'black','DisplayName','y(1:250,1)','YDataSource','yest(1:250,1)'); plot(u2(1:250,1),'g','DisplayName','y(1:250,1)','YDataSource','yest(1:250,1

    )');

  • 31

    Funo MyHouse

    function [A,err,Piv]=myhouse(Psi,np); % [A,err,Piv]=myhouse(Psi,np); % Do livro Matrix Computations 2a Ed. pg 212 % Dada a matriz Psi (m,n), esta rotina acha Q de forma % que Q'*Psi=V triangular superior. A parte triangular % superior de A substituda pela parte triangular % superior de V. % % Assume-se que a ltima coluna de Psi o vetor de % observacoes a ser explicado, y(k). % np o nmero de regressores escolhidos para compor o modelo % err um vetor de np valores que contem as taxas de reduo de erro % de cada um dos regressores escolhidos % Piv um vetor que contem os indices dos regressores escolhidos, ou % seja so os indices das colunas usadas para pivotar a matriz % Psi np vezes.

    [m,n]=size(Psi); A=Psi; yy=Psi(:,n)'*Psi(:,n); piv=1:n-1;

    for j=1:np % Opera por colunas, ate o numero de termos final

    % Determina err para demais regressores e volta a escolher % o de maior valor

    for k=j:n-1 % ate completar o numero de termos candidatos c(k)=((A(j:m,k)'*A(j:m,n))^2)/((A(j:m,k)'*A(j:m,k))*yy); % err do

    regressor k end;

    [ans aux]=max(c(j:n-1)); jm=j+aux-1; err(j)=ans; aux=A(:,jm); % column of regressor with greatest err A(:,jm)=A(:,j); A(:,j)=aux; aux=piv(jm); % indice do regressor com maior err piv(jm)=piv(j); piv(j)=aux;

    x=A(j:m,j); % v=house(x) % Do livro Matrix Computations 2a Ed. pg 196 % Dado um vetor x, volta-se um vetor v de tal forma % que (I-2vv'/v'v)x zero excecao do primeiro elemento

    nx=length(x); u=norm(x,2); v=x; if u ~= 0 b=x(1) + sign(x(1))*u; v(2:nx) = v(2:nx)/b;

  • 32

    end; v(1)=1; % fim house(x)

    a=A(j:m,j:n);

    % a=rowhouse(a,v) % Do livro Matrix Computations 2a Ed. pg 197 % Dada uma matriz A (m,n), e um vetor de comprimento m, v, % cujo primeiro elemento 1, este algoritmo substitui % A por P*A onde P=I-2vv'/v'v

    b=-2/(v'*v); w=b*a'*v; a=a+v*w'; % fim rowhouse(a,v)

    A(j:m,j:n)=a;

    end; % fim myhouse(A) Piv=piv(1:np);

    Funo Myccf Clcula a Funo de correlao cruzada.

    function [t,r,l,B]=myccf(c,lag,flag1,flag2,cor);

    % [t,r,l]=myccf(c,lag,flag1,flag2,cor); % c1=c(:,1); c2=c(:,2); % the ccf are calculated from -lag/2 to lag/2 if flag1 = 1; % the ccf are calculated from 0 to lag if flag1 = 0; % plots the ccf between c1 and c2 if flag2 = 1; % if flag2=0 the ccf is returned in r (with respective % lags in t), but not plotted; % l is a scalar, the 95% confidence interval is +-l; % if cor='w', white lines are used. If cor='k', black. % r*B is the unnormalized value of r. % % in case of intending the FI(eu) plot c MUST be =[e u]

    % Luis Aguirre - Sheffield - may 91 % - Belo Horizonte - Jan 99, update

    if flag1==1, lag=floor(lag/2); end;

    c1=c(:,1); c1=c1-mean(c1); c2=c(:,2); c2=c2-mean(c2); cc1=cov(c1); cc2=cov(c2); m=floor(0.1*length(c1)); r12=covf([c1 c2],lag+1);

    t=0:1:lag-1;

  • 33

    l=ones(lag,1)*1.96/sqrt(length(c1));

    % ccf

    % Mirror r12(3,:) in raux raux=r12(3,lag+1:-1:1); %for i=1:lag+1 % raux(i)=r12(3,lag+2-i); %end;

    B=sqrt(cc1*cc2); r=[raux(1:length(raux)-1) r12(2,:)]/B;

    % if -lag to lag but no plots if flag1 == 1, t=-(lag):1:lag; else t=0:lag; r=r12(2,1:lag+1)/B; end;

    % if plot if flag2 == 1,

    % if -lag to lag if flag1 == 1, t=-(lag):1:lag; l=ones(2*lag+1,1)*1.96/sqrt(length(c1)); if cor=='w' plot(t,r,'w-',t,l,'w:',t,-l,'w:',0,1,'w.',0,-1,'w.'); else plot(t,r,'k-',t,l,'k:',t,-l,'k:',0,1,'k.',0,-1,'k.'); end; xlabel('lag');

    else t=0:lag; l=ones(lag+1,1)*1.96/sqrt(length(c1)); if cor=='w' plot(t,r12(2,1:lag+1)/B,'w-',t,l,'w:',t,-l,'w:',0,1,'w.',0,-1,'w.'); else plot(t,r12(2,1:lag+1)/B,'k-',t,l,'k:',t,-l,'k:',0,1,'k.',0,-1,'k.'); end; xlabel('lag'); end;

    else % if -lag to lag, but no plots if flag1 == 1, t=-(lag):1:lag; else t=0:lag; r=r12(2,1:lag+1)/B; end;

    end; l=l(1);