Redução de ruído e Interpolação 18 de Maio de 2010 Joana Nunes Nº 58497 Grupo 10 João Marques Nº 58513 Processamento Digital de Sinais Engenharia Biomédica 2º Semestre 2009/2010 1. Visualização do sinal data.mat Nesta primeira alínea pretende-se apenas carregar o ficheiro data.mat para o workspace para proceder à visualização do sinal. O sinal com que se irá trabalhar encontra-se representado na Figura 1. Figura 1. Sinal com gaps de informação Observa-se neste sinal que os pontos existentes não são igualmente espaçados, e que existem gaps onde não há amostras. Será objectivo deste trabalho tentar estimar a informação que falta, recorrendo ao método dos mínimos quadrados. %% Pergunta 1 load data; plot(t,x,'.'); 2. Aproximação por um polinómio de grau 4 Nesta alínea pretende-se implementar o método dos mínimos quadrados para aproximar os primeiros 30 valores da informação com gaps por um polinómio de grau 4. Para tal, note-se que o caso geral que se está a considerar é aproximar a nossa função por uma combinação linear de funções de base linearmente independentes. No caso desta alínea irão utilizar-se polinómios, mas em geral tem-se ( ) (1) 1
onde representa o erro que se tem em cada ponto. Note-se que se está a adoptar a convenção de soma de Einstein, para se ter uma notação menos pesada. Logo, existe uma soma implícita em. Agora, numa abordagem de mínimos quadrados pretende-se minimizar o erro quadrático, de acordo com a expressão ( ) ( ( )) (2) 0: Para minimizar esta função, toma-se a sua derivada em ordem a e iguala-se a ( ( ( )) ) (( ( )) ) ( ( )) ( ) ( ( )) ( ) ( ( )) ( ) ( ( ) ( ) ( )) ( ) ( ) ( ) (3) Escrevendo esta igualdade na forma matricial, obtém-se: sendo que equações lineares nos coeficientes : com. ( ). Rearranjando os termos, obtém-se um sistema de Concretizando agora para o caso de polinómios, ( ). O aparecimento do -1 é apenas pelo facto de se estar a considerar que os índices começam em 1, quando o polinómio de menor grau é de grau 0. Assim, implementou-se (5) computacionalmente para o caso de polinómios de grau 4. O resultado pode ser visto na Figura 2. (4) (5) 2
Figura 2. Fit polinomial de 4ª ordem para as primeiras 30 amostras do sinal. Observa-se claramente nesta imagem que o polinómio encontrado se adapta bastante bem, dentro das restrições impostas (grau é no máximo 4). Quando comparado com o resultado da função polyfit do MATLAB, devolve exactamente o mesmo output, o que atesta a qualidade da implementação realizada. Note-se a existência do termo de ambos os lados de (4). Apesar de parecer redundante, a verdade é que do ponto de vista numérico a presença desta matriz de ambos os lados é importante. Isto porque apresenta uma grande gama de valores (desde 1 até cerca de ), o que pode trazer erros na inversão desta matriz. A multiplicação pela transposta de ambos os lados traz alguma estabilidade ao sistema. Este facto é bastante mais evidente na alínea seguinte. %% Pergunta 2 tk=t(1:30); xk=x(1:30); B=min_square_poly(tk,xk,4); y=imagem_poly(tk,dt,4,b); 3. Aproximação por um polinómio de grau 11 Esta alínea é em tudo semelhante à anterior, diferindo apenas no grau do polinómio a utilizar, que é agora 11. Verifica-se que a aproximação é de facto melhor (do ponto de vista dos mínimos quadrados), sendo que o resultado se encontra na Figura 3. 3
Figura 3. Fit polinomial de 11ª ordem para as primeiras 30 amostras do sinal. Mais uma vez, quando se compara o resultado com o obtido através da função polyfit, verifica-se que são iguais. %% Pergunta 3 tk=t(1:30); xk=x(1:30); B=min_square_poly(tk,xk,11); y=imagem_poly(tk,dt,11,b); 4. Aproximação por splines Pretende-se agora obter uma aproximação para o problema dos mínimos quadrados utilizando não polinómios, mas um outro conjunto de funções de base, também linearmente independentes. Neste caso irão utilizar-se pulsos triangulares, com a forma ( ) { (6) Desta forma, basta apenas substituir em (5) este conjunto de funções de base. Os resultados obtidos encontram-se na Figura 4. 4
Figura 4. Fit por 11 splines para as primeiras 30 amostras do sinal. Analisando o resultado, verifica-se que é bastante semelhante ao obtido com o polinómio de grau 11. Verifica-se no entanto que o facto de as funções de base serem pulsos triangulares leva a uma maior irregularidade no comportamento da aproximação obtida. %% Pergunta 4 tk=t(1:30); xk=x(1:30); B=min_square_spline(tk,xk,10); y=imagem_spline(tk,dt,10,b); 5. Repetição das simulações anteriores para a sequência completa Nesta última alínea pretende-se aproximar a totalidade do sinal utilizando o método dos mínimos quadrados para polinómios (grau 4 e 11) e para splines (centradas em 0,1,,10). Os resultados podem ser vistos na Figura 5, Figura 6, e Figura 7. 5
Figura 5. Fit polinomial de 4ª ordem para todo o sinal. Figura 6. Fit polinomial de 11ª ordem para todo o sinal. Figura 7. Fit por 30 splines para todo o sinal. Analisando os resultados, estes são os esperados nos casos polinomiais, com aproximações válidas tendo em conta o grau escolhido. Quanto ao resultado da aproximação por splines, este é também bastante aproximado, excepto nos locais onde 6
não existe informação, e onde a solução vem nula. Não se pode avaliar a qualidade da solução nesta região, já que não havendo informação, a matriz com que se trabalha deixa de dar origem a um sistema determinado, passando a haver mais do que uma solução, o que leva a que o MATLAB devolva a solução com menor norma (com os coeficientes indeterminados iguais a 0). Na implementação desta última parte foi necessário retirar a multiplicação por de ambos os lados de (4), já que a sua utilização levava a que e deixassem de tomar valores numéricos, por perda de precisão por se trabalhar com matrizes singulares. %% Pergunta 5.1 tk=t; xk=x; B=min_square_poly(tk,xk,4); y=imagem_poly(tk,dt,4,b); %% Pergunta 5.2 tk=t; xk=x; B=min_square_poly(tk,xk,11); y=imagem_poly(tk,dt,11,b); %% Pergunta 5.3 tk=t; xk=x; B=min_square_spline(tk,xk,30); y=imagem_spline(tk,dt,30,b); 7