Sistemas e Sinais (LEIC) Carlos Cardeira Sistemas e Sinais As Engenharias (Electrotécnica, Mecânica, etc) estão a perder o contacto com o mundo físico. Microelectromecânica o que é ? Engª Mecânica ? Electrotécnica ? Processamento de Sinal ? Matemática ? Redes ? Onde existem sistemas ? Sistemas aeronáuticos Mecânica estrutural Sistemas eléctricos Futuros e Opções … Circuitos Os circuitos são o coração de um Engenheiro (especialmente electrotécnico) Mas hoje já existem técnicas analíticas que evitam o desenho de circuitos Circuitos em si passaram a ser uma área de especialização Sinais Tradicionalmente, um sinal é uma tensão que varia ao longo do tempo. Actualmente é mais provável que seja uma sequência de bits enviada pela internet através de TCP/IP Estado O estado de um sistema poderia ser bem determinado pelas variáveis de uma equação diferencial Agora é mais provável que seja um conjunto de registos de um computador. Sistema Um sistema era razoavelmente bem modelizado por uma função de tranferência linear e invariante no tempo. Agora, parece ser mais adequadamente descrito através de uma máquina de Turing ! Sistemas e Sinais Sinais, Sistemas e Funções Noção de Estado Não Determinismo e Equivalência Composição de Máquinas de Estado Sistemas Lineares Resposta de Sistemas Lineares Sistemas Híbridos Resposta em frequência Filtragem Convolução Transformadas de Fourier Amostragem Sinais e Sistemas Os sinais transportam informação Os sistemas transformam sinais Sinais Som Imagem Sequência de comandos Lista de nomes … Funções Sistemas Realçar uma imagem Amplificar um som … Funções ! Matematicamente … Um sinal é uma função que mapeia um domínio (frequentemente tempo ou espaço) num contradomínio (frequentemente uma medida física como pressão, intensidade de luz …) Um sistema é uma função que mapeia sinais (entradas) em sinais (saídas). São funções de funções. Sinais Sinais são funções que transportam informação: Radio e TV chegam-nos através de sinais que são ondas electromagnéticas Imagens são sinais que transportam informação através de pontos de intensidade e cor variáveis Sensores Sensores de pressão, temperatura, velocidade, convertem estas grandezas físicas em tensão (sinais) Funções Sinais e Sistemas serão encarados como funções. Cada função é sempre constituída por: Um nome Um domínio Um contradomínio A regra que converte cada elemento do domínio em um e só um elemento do contradomínio (ver apêndice A do livro de referência) Exemplo: Nome: Cube Domínio: Reais Contradomínio: Reais Regra: Sinais de Audio: Domínio e Contradomínio Sinusoide pura Soma de Sinusoides Onda sonora A pressão não pode assumir valores negativos. Na figura aparecem valores negativos porque normalmente se subtrai a pressão atmosférica (105 N/m2) uma vez que os nossos ouvidos não “ouvem” a pressão atmosférica Exemplo x=0:pi/8192:2*pi sound(sin(1000*x)) sound(sin(10000*x)) sound(sin(1000*x)+sin(10000*x)) Representação discreta Mas num computador não se guardam sinais contínuos (numa cassete sim, embora com distorção…) É usual guardá-los em palavras de 16 bit gravadas a intervalos regulares Com 16 bit é possível distinguir 65536 níveis de intensidade diferentes Guardando esses valores a um ritmo de 44 Khz obtém-se uma boa representação do sinal contínuo (som) original Representação Discreta Representação Discreta (Exemplo) Canal Esquerdo Canal Direito Bocelli 44.1 Khz 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 0 0.5 1 1.5 2 2.5 3 5 x 10 Se amostrado a 4.41 Khz: [Bocelli44, SampleFreq, Bits]=wavread('bocelli'); siz=size(Bocelli44); ratio=10 for i=ratio:ratio:siz(1) Bocelli4(i/ratio) = (Bocelli44(i, 1) + Bocelli44(i, 2))/2; i end Bocelli amostrado a 4.41 Khz Bocelli 4.41 Khz 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 0 0.5 1 1.5 2 2.5 3 4 x 10 Comparação Canal Esquerdo Canal Direito Bocelli 44.1 Khz 0.15 0.1 0.05 0 -0.05 Bocelli 4.41 Khz -0.1 0.15 -0.15 0.1 -0.2 20 40 60 80 100 120 140 0.05 0 -0.05 -0.1 2 4 6 8 10 12 14 Imagens Foto a preto e branco Exemplo de imagem Imagens a cores Olhos e ouvidos O ouvido consegue distinguir sons de frequências diferentes quando somados O olho não consegue distinguir cores diferentes quando somadas O ouvido pode ser modelizado por um sistema linear enquanto que o olho não Filme: Domínio e Contradomínio Filme: Domínio e Contradomínio Alternativamente: Sequência de imagens forma um filme Sequência de imagens forma um filme Olhos e ouvidos Uma amostragem de 30 Hz é suficiente para reconstruir um filme Uma amostragem de 8 KHz ainda é insuficiente para reconstituir um som Conclusão: não fossem os volumes de informação a tratar serem bem diferentes, dir-se-ia que somos muito melhor a “ouvir” do que a “ver”. Qual a representação mais favorável ? Video:TempoDiscreto → Imagens DiscreteTime={0, 1/30, 2/30, …} Video(t) Imagens Video(t)(i,j) Intensidade3 (é o pixel i,j da frame t) Qual a representaçao mais favorável AltVideo: TempoDiscreto x Linhas x Colunas → Intensidade3 AltVideo(t,i,j) é a intensidade do pixel i, j da frame t AltVideo(t,i,j) = Video(t)(i,j) A representação mais favorável dependerá do que pretendemos caso a caso. Depende do Engenho … Sinais que representam atributos físicos Posição de um avião Posição e velocidade de um avião Sinais que representam atributos físicos Posição de um pêndulo Sinais compostos por eventos Sequência de eventos que ocorre durante a realização de uma chamada telefónica Sequência de comandos para uma impressão Domínio e Contradomínio Exemplo: Condução Condução: Indices→ Eventos Índices = {0,1,2,…,N} Eventos: {Ligar, Acelerar, Travar, 1ª, 2ª, 3ª, 4ª, 5ª, Marcha-Atrás, Virar Esquerda, Virar Direita, Parar} Domínio e Contradomínio Exemplo: Entrada e Saída de Pessoas na sala Porta_de_entrada: Indices→ Eventos Índices = {0,1,2,…,N} Eventos: {Entrada, Saída} Exemplo: Número de Pessoas na sala Pessoas_na_sala: Índices → Inteiros Os índices representam uma sucessão ou ordem de eventos e não o tempo SISTEMAS Entradas (u) Sistema Sinais Saídas (y) DTMF DTMF:{0,1,2,3,…,9,*,#}→sound SISTEMAS: Pessoas_na_sala Pessoas_na_sala: [Índices→{entrada,saída}] → [Índices →N.Pessoas_na_sala] u=(e,e,e,s,e,…) y=(2,3,4,3,4,…) Sala (1 p. início) Sistema : Função O sistema “Pessoas na sala” pode ser descrito através da funcão: y(0)=1+1(u(0)==e)-1(u(0)==s)=2 … y (n) 1 1(u (k ) e) 1(u (k ) s) n k 0 1 : verdadeiro, falso 1,0 1(verdadeiro) 1,1( falso) 0 (Sistemas deste tipo têm a ver com o dimensionamento de buffers) Sistema Contínuo Velocidades:[0,5]→Reais, Posição:[0,5]→Reais S:Velocidades→ Posição u Velocidades S y Posição y(0)= pos. ini. u Velocidades, t 0,5 t S (u )(t ) y (t ) y (0) u ( )d 0 Sistemas que dependem do passado y(n) 1 1(u (k ) e) 1(u (k ) s) n k 0 t S (u )(t ) y(t ) y(0) u( )d 0 Nestes sistemas, o sinal de saída depende não apenas do valor do sinal de entrada nesse instante, mas de todo o passado do sistema Nota: t S (u )(t ) y(t ) y (0) u ( )d 0 S(u)(t) faz sentido porque S(u) é uma função de t. S(u(t)) não faz sentido porque u(t) é apenas um número e a função S depende de todo o passado de u(t) Nota: t Re als, S u t yt u t 2 Neste sistema, y(t) só depende do valor de u(t) no mesmo instante. Neste caso, S(u)(t) e S(u(t)) já fazem sentido. Composição de sistemas S2 a v v S1 v(0) y y(0) S S : aceleração posição S S a t y t y 0 v sds 1 2 t 1 2 0 y 0 0 v 0 0 a d d s t s Máquinas de estados Sinais de entrada e de saída são eventos Representa-se graficamente a dependencia do passado Reconhecedor de Sequências Máquina de estados Máquina de estados Tem um número de círculos igual ao número de estados De cada estado saem tantas setas quantos os diferentes símbolos de entrada Cada seta tem o símbolo de entrada / valor da saída que produz caso o sistema esteja nesse estado e receba essa entrada Máquina de estados No caso do reconhecedor: Update (init, ‘0’) = (a, f) Update (a, ‘1’) = (init, f) … Máquina de Estados Reconhecedor O reconhecedor de sequências anterior detecta uma sequência de 3 símbolos ‘0’ seguidos Aceita um alfabeto maior que o primeiro reconhecedor apresentado Reconhecedor com 4 estados Reconhecedor com 4 estados Embora tenha mais estados este reconhecedor produz exactamente o mesmo resultado Apenas os nomes dos estados são mais intuitivos Definição formal de máquina de estados StateMachine = (States, Inputs, Outputs, update, initialState) States é o espaço de estados Inputs é o conjunto de símbolos de entrada (alfabeto de entrada) Outputs é o conjunto dos símbolos de saída (alfabeto de saída) initialState ∈ States é o estado inicial update: States x Inputs → States x Outputs é a função que mapeia os sinais de entrada nos sinais de saída Entradas e Sinais de entrada Não confundir Entradas com Sinais de entrada. Um sinal de entrada é uma sequência de elementos do conjunto de entradas Analogamente em relação às saídas. Reconhecedor Máquinas de estado Por vezes é conveniente separar a função update em duas: update = (nextState, output), nextState: States x Inputs → States output: States x Inputs → Outputs Ou: update(s(n), x(n)) = (s(n+1), y(n)) nextState(s(n), x(n)) = s(n+1) output(s(n), x(n)) = y(n) Funcionamento da ME S = (States, Inputs, Outputs, update, initialState) InputSignals = [Nats0 → Inputs] OutputSignals = [Nats0 → Outputs] Um sinal de entrada x = (x(0), x(1), … , x(n), …) provoca mudanças de estado s: Nats0 → States e mudanças nas saídas y: Nats0 → Outputs s(0) = initState, and n ≥ 0, e recursivamente teremos (s(n+1), y(n)) = update (s(n), x(n)) Assim S define um sistema F: InputSignals → OutputSignals Exemplo Reconhecedor: InputSignals = [Nats0 → {0,1}] OutputSignals = [Nats0 → {t,f}] F: ∀x ∈ InputSignals, ∀ n ∈ Nats0 y(n) = F(x)(n) = t, se (x(n-2), x(n-1)), x(0)) = (0,0,0) = f, se não Símbolo ‘Absent’ absent ∈ Inputs and absent ∈ Outputs s ∈ States, update(s, absent) = (s, absent) Reconhecedor Modificado Reconhecedor Modificado O reconhecedor modificado produz apenas a saída “true” quando encontra a sequência e não produz nada (absent) enquanto não encontrar a sequência. Simplificações (else e absent implícitos) Guardas Em cada estado, as guardas devem ser disjuntas Diz-me que se trata de uma máquina determinística porque a cada entrada só pode corresponder um estado seguinte. A união de todas as guardas em cada estado deve ser igual ao conjunto das entradas Máquina de Estados - Tabela Se o número de entradas e de estados for finito, a função update pode ser dada por uma tabela Exemplo : Parquímetro Parquímetro InputSequence = coin25, tick 20, coin5, tick 15, ... StateResponse = 0, 25, 24, ..., 6, 5, 10, 9, 8, ..., 2, 1, 05 OutputSequence = expired, safe, safe, ..., safe, safe, safe, safe, safe, ..., safe, safe, expired5 Formas de representar máquinas de estados Modelo de conjuntos / funções Diagrama de estados/transições Tabela As duas últimas formas não permitem representar máquinas infinitas Exemplo: Gravador de Chamadas Uma empresa quer especificar um gravador de chamadas. Normalmente especifica em linguagem natural (português), que pode ser ambígua. Se especificasse em Máquinas de Estados não haveria ambiguidade. Especificação e Implementação Normalmente especifica-se as relações entre as entradas e saídas, só que esse conjunto pode ser infinito. Passar de máquinas de estados a uma implementação é cada vez mais automático Gravador de Chamadas Gravador de Chamadas Entrada: ring, ring, ring, end greeting , end message, … Estado: idle, count1, count2, play greeting, recording , … Saída: absent, absent, answer, record, recorded, … Gravador de Chamadas Se alguém atender, a máquina vai para idle. As máquinas normais continuam a gravar porque não reconhecem o evento “levantar do auscultador”. Funções como gravar, etc, não são feitas pela máquina de estados. Alguém se encarrega disso. Exemplo: Delay Delay unitário Delay 2 Delay n Delay 2 implica 4 estados Delay n implica 2n estados Se ligarmos dois delays e os combinarmos o número total de estados é quanto ? Atenção que o estado passa a ser a combinação dos estados. Máquinas de Estados Não Determinísticas São máquinas em que a uma entrada pode corresponder mais do que um estado ou saída. Exemplo: parquímetro em que se reduz o número de estados. Fica não determinística mas bastante simplificada. No entanto a máquina não determinística deve manter o mesmo comportamento da máquina determinística. Máquinas não Determinísticas As guardas já não são disjuntas. A um sinal de entrada podem corresponder muitos sinais de saída. Exemplo: x(n)= 0, 1, 0, 1, 0, 1 Transição de estados Se a máquina for não determinística, pode haver uma probabilidade de ir para um ou para outro estado. Se assim for estamos perante “Cadeias de Markov”. No nosso caso, o não determínismo pode ser usado para situações não modeladas. Update Em máquinas não determinísticas, a função update não gera um estado mas um conjunto de estados. Não deixa de ser uma função. Estados Possíveis possibleUpdates(a, 0) = { (a, 0) } possibleUpdates(a, 1) = { (b, 1) } possibleUpdates(b, 0) = { (a, 0), (b, 1) } possibleUpdates(b, 1) = { (b, 1) } Função Possibleupdate continua a ser uma função, porque gera sempre um elemento do contradomínio. Em contrapartida, a relação entre os sinais de entrada e os sinais de saída deixa de ser uma função. Funções e Comportamentos Uma máquina determinística pode ser definida por uma função. Uma máquina não determinística define um comportamento Behaviors = {(x,y) | y is a possible output signal corresponding to x} ⊂ InputSignals x OutputSignals Parquímetro Não Determinístico Comparação A máquina não determinística é mais simples. No entanto, as saídas possíveis da máquina não determinística, incluem as da máquina deterministica. A máquina não determinística pode fazer o que a máquina determinística faz e possívelmente algo mais. Abstracção A máquina ND esconde detalhes da máquina D As duas máquinas não são equivalentes. A máquina ND é uma abstracção da máquina D Interesse das Máq. ND Por outro lado, se se provar que a Máquina não Determinística não pode ter um certo comportamento, então, garantidamente, a Máquina Determinística também não o poderá ter. Se a ND for segura, a D também o será, admitindo que, por segura se entende que determinados estados não sucederão. Exemplos: Deadlock. Livelock, etc. Equivalência Máquina determinística Máquina não determinística Equivalência e Simulação Ambas respondem com (1, 0, 1, 0 …) à entrada (1, 1, 1, 1 …) Consideram-se máquinas bisimilares (mutuamente similares) porque uma máquina simula a outra e reciprocamente. Considera-se que uma máquina simula outra quando consegue fazer o mesmo que a outra e talvez mais. A máquina não determinística para o parquímetro simulava a máquina determinística do mesmo parquímetro. A e B são mutuamente similares se A simula B e B simula A Simulação Uma máquina simula outra se conseguir ganhar o jogo da igualdade (matching game) Regras do jogo da igualdade: Inicialmente ambas as máquinas estão prontas no seu estado inicial. Apresenta-se uma entrada a ambas. B simula A se for capaz de produzir a mesma saída sempre. Se B não for capaz, perdeu o jogo e não simula A Simulação (formal) Considere as seguintes máquinas não determinísticas Simulação (formal) Ilustração da Simulação Teorema Se B simula A ComportamentosB כComportamentosA exemplo ComportamentosB = ComportamentosA Mas B não simula A ! Combinações de ME Tendo um sistema descrito por uma máquina A Um sistema descrito pela máquina B Se as saídas de A forem ligadas a B deve ser possível conhecer o sistema final com base nos seus componentes. Se a saída realimentar para a entrada, também deverá ser possível fazer a mesma análise. Hipótese de funcionamento Quando uma entrada chega ao sistema ela é imediatamente consumida e é gerada a saída correspondente. Essa saída é consumida no mesmo instante pelo sistema a jusante. Cada componente só reage uma vez ao sinal de entrada. Se houver realimentação, o sinal de saída aparece à entrada no mesmo instante. Trivial: Composição paralela Composição paralela Composição paralela Composição em cascata Composição em cascata Composição em cascata: exemplo Composição em cascata: exemplo No exemplo anterior, os estados (1,0) e (0,1) não são alcançáveis. Numa composição em cascata, podem existir estados não alcancáveis. Composição: Produto de Entradas/Saídas Composição: Produto de Entradas/Saídas Como no caso do atendedor, há sinais que podem ter proveniências diferentes e saídas que podem ter destinos diferentes. O sinal de play e o de record podem ser destinados a máquinas diferentes. O Sinal de Chamada (ring) pode provir de uma entrada diferente do sinal de fim de chamada (end message) Composição: Produto de Entradas/Saídas Composição: Produto de E/S Por vezes, há entradas específicas para determinados elementos do alfabeto. Feedback O Problema consiste em calcular a função update. Ponto Fixo A função update define-se através de iterações que conduzam ao “ponto fixo”. O que é o ponto fixo (Fixed Point) O que é o ponto fixo (Fixed Point) O que é o ponto fixo (Fixed Point) Ponto Fixo: Hipóteses Não há soluções: significa que não há sinais que possam colocar o sistema a funcionar. O sistema não funciona. Há mais do que uma solução: significa que o problema não é “bem formado” e não pode ser resolvido (not well formed) Há uma solução única: significa que o sistema é “bem formado” (well formed) Ponto Fixo: Exemplo X=Y=Reais f(x)=2x-1 Solução do ponto fixo: X=f(x) 2x-1 = x Tem uma solução única: x = 1 Se f(x) = x2 o sistema tem duas soluções (seria no máximo, uma máquina não determinística) Se f(x) = x+1 não tem solução Realimentação sem entradas externas: exemplo 1 Sistema “bem formado” Se estiver no estado 1 e a entrada for verdadeiro, o sistema não tem solução. Se estiver no estado 1 e a entrada for falsa, ele consome a entrada e passa ao estado 2 gerando a saída falsa que é igual à entrada. Se estiver no estado 2 e a entrada for falsa, o sistema não tem solução. Se estiver no estado 2 e a entrada for verdadeira, ele consome a entrada e passa ao estado 1 gerando a saída verdadeira que é igual à entrada. O sistema é bem formado porque para cada estado há uma única solução x=f(x) Realimentação sem entradas externas Sistema “bem formado” O sistema não tinha entradas. A entrada react é criada artificialmente para representar que quando surge a máquina pode avançar para o estado seguinte (correr a sua função update). As duas máquinas são equivalentes porque quando a entrada react surge, as únicas hipóteses de evolução são as indicadas na máquina inferior. Realimentação sem entradas externas: exemplo 2 Sistema “mal formado” (not wellformed) Se estiver no estado 1 e a entrada for verdadeiro, o sistema não tem solução. Se estiver no estado 1 e a entrada for falsa, ele consome a entrada e passa ao estado 2 gerando a saída falsa que é igual à entrada. Para o estado 1 há portanto uma solução única e o sistema está no bom caminho para ser considerado “bem-formado” Se estiver no estado 2 e a entrada for verdadeira ou falsa, a saída gerada é diferente da entrada. O sistema é mal formado porque há um estado em que não há solução para x=f(x) Realimentação sem entradas externas: exemplo 3 Sistema “mal formado” (not wellformed) Se estiver no estado 1 e a entrada for verdadeiro, a máquina consome a entrada e gera uma saída igual. Se estiver no estado 1 e a entrada for falsa, ele consome a entrada e passa ao estado 2 gerando a saída falsa que é igual à entrada. O sistema é mal formado porque há um estado em que há mais do que uma única solução x=f(x). Máquinas em que a saída depende apenas do estado Máquinas em que a saída depende apenas do estado Nestes casos, qualquer que seja a entrada, a saída é sempre a mesma para cada estado. output(s, y) = y terá sempre uma única solução que corresponderá à guarda cuja entrada for igual a y Desta forma, estas máquinas são sempre “bem formadas”. Interesse das máquinas “bem formadas” Máquina B bem formada (saída depende do estado) y w A B z C Se uma máquina é Bem formada (as saídas dependem apenas do estado), então sistema é bem formado Máquinas em que a saída depende apenas do estado Suponhamos que a máquina B está num certo estado e gera a saída y. A máquina C (que pode não ser bem formada), gera z. A máquina A gera w. Mas w será uma das guardas desse estado da máquina B. Então ela continuará a gerar y. O sistema todo é bem formado porque um dos seus elementos o era. Delay A máquina delay tem saídas determinadas pelo estado. É bem formada. Bem formado ou mal formado ? Método geral Bem formado ou mal formado ? Método geral Começa-se com uma saída algures Para cada máquina Se a saída puder ser determinada, produzi-la Se a mudança de estado puder ser determinada, fazê-la Repetir até dar a volta Se todas as saídas estão determinadas – Bem formado Se alguns sinais estiverem indefinidos – Mal formado Bem formado ou mal formado ? Exemplo Bem formado ou mal formado ? Exemplo Começar com o estado A O estado A gera sempre a saída y2=1 Como y2 é realimentada, teremos update (a, 1) = (b, (1,1)) O estado B gera sempre a saída y2=0 Como y2 é realimentada, teremos update (b, 0) = (b, (0,0)) Realimentação com entradas Realimentação com entradas A máquina tem dois portos de saída, outputM1 e outputM2. Escolher um estado s. ∀x1 ∈ Inputs1, resolver: outputM2 (s, (x1, y2)) = y2; se y2 for única, então nextState (s, x1) = (nextStateM(s, (x1, y2)) output(s, x1) = outputM1(x1, y2) Passará a haver uma equação de ponto fixo para cada valor da entrada. Sumário dos Caps. I a IV Vimos até agora: Sinais que são funções com domínio e contradomínio: exemplo: sons, imagens Sistemas que transformam sinais, são funções de funções: exemplo: filtros, máquinas de fax Máquinas de estado (determinísticas ou não) que descrevem a evolução dos sistemas.