SlideShare a Scribd company logo
1 of 20
Download to read offline
Tópicos em Processamento de Sinais
                                                                         Departamento de Engenharia Elétrica
                                                                                    Faculdade de Tecnologia
                                                                                     Universidade de Brasília


                                             MATLAB
1) Introdução
        O aplicativo Matlab é uma das ferramentas mais úteis para as áreas de processamento de
sinais, controle, e outras aplicações. O “Mat” do nome Matlab está relacionado com “Matriz”, ou
seja, é um laboratório que permite a manipulação eficiente de matrizes. Pode-se dizer também que o
Matlab permite também a manipulação eficiente de vetores, já que um vetor de tamanho N pode ser
visto como uma matriz de Nx1.
       Uma das melhores formas de se familiarizar com o Matlab é através do comando intro, que
provê uma turnê pelas características básicas do programa.


Exercício 1
       Use o comando intro e, com atenção, procure entender todos os exemplos fornecidos.
        A aplicação predominante no presente curso será o processamento digital se sinais. Para
isto, preparamos algumas técnicas em Matlab que facilitarão o uso do aplicativo para esta tarefa.


2) Geração de Sinais Amostrados
       Como primeiro exemplo, geraremos a seguinte função senoidal no Matlab:
                                 f(t)=sin(2*pi*fo*t)
       Onde fo=1 Hz.
       A função é mostrada na seguinte figura:
                                                 Senoide de 1 Hz
                            1

                          0.8

                          0.6

                          0.4

                          0.2

                            0
                   f(t)
                          -0.2

                          -0.4

                          -0.6

                          -0.8

                           -1
                             0     0.2           0.4        0.6    0.8          1
                                                   Tempo (seg.)


                                                                                                           1
Tópicos em Processamento de Sinais
                                                                      Departamento de Engenharia Elétrica
                                                                                 Faculdade de Tecnologia
                                                                                  Universidade de Brasília


        Para permitir o processamento de sinais por computador, o sinal analógico deve ser
digitalizado por um conversor analógico para digital (A/D). Neste processo o sinal é amostrado em
vários instantes, em intervalos de tempo constante. O intervalo de tempo é o período de amostragem
(T), e o recíproco de T é a freqüência de amostragem (fs= 1/T). A unidade de tempo do período de
amostragem em geral é segundos, e a de Freqüência é em Hz. 100 Hz significa que 100 amostras do
sinal são tomadas em 1 segundo.
       Pode-se simular funções amostradas no Matlab. O exemplo abaixo mostra como se pode
simular a amostragem de uma senóide no Matlab:


Exercício 2
      Siga os passos descritos para simular a amostragem de uma onda senoidal no seguinte
exemplo. Digite os comandos na Matlab, e observe os efeitos.


1) Crie o eixo do tempo:
        t=0:0.05:1;
       O comando acima cria uma variável (vetor) com os elementos 0, 0.05, 0.1, ..., 1. O ponto e
vírgula evita que a variável seja exibida na tela. Tente rodar o comando acima e observe o que
acontece. Caso você tenha errado, e o vetor inteiro comece a aparecer na tela, você pode parar o
processo usando CTRL-C.
O comando size(t) exibe o tamanho da matriz t, e o comando length(t) mostrará o comprimento do
vetor. Experimente estes comandos.


2) Crie a função:
        f=sin(2*pi*t);
O comando acima cria um vetor cujas componentes são a função senoidal calculada a cada valor do
vetor t. Assim, no Matlab, você pode calcular o seno de um vetor, ou mesmo de uma matriz.
Execute este comando.


3) Plotar a função:
        plot(t,f)
       Este comando faz a plotagem do sinal, tendo f no eixo y, e o correspondente t no eixo x.
Execute este comando.


4) Coloque o Titulo e as variáveis dos eixos x e y:
        title(‘Funcao Senoidal’)
        xlabel(‘Tempo (segundos)’)
        ylabel(‘Amplitude (Volts)’)
                                                                                                        2
Tópicos em Processamento de Sinais
                                                                       Departamento de Engenharia Elétrica
                                                                                  Faculdade de Tecnologia
                                                                                   Universidade de Brasília




       Experimente os comandos acima.
       Tente também os seguintes comandos:
       plot(f,t)
       plot(f)
       plot(t)


       O que aconteceu no primeiro comando? No segundo comando, a senóide foi plotada, mas o
eixo y mostrou simplesmente o número da amostra, mas não o tempo correspondente a cada abcissa
y. Explique o que acontece no terceiro exemplo.
       Tente também as seguintes opções:
       plot(t,f,’*’)
       plot(t,f,’b*’)
       plot(t,f,’.’)
       plot(t,f,’c.’)
       plot(t,f,’-’)
       plot(t,f,’y-’)


       Observe as cores e características dos gráficos. Agora digite help plot, e leia
cuidadosamente as descrições da função plot.
       Agora digite a seguinte função:
                      grid
       Note o efeito da função, e digite help grid, para ver as características desta função.
       Agora gere uma segunda função:
                      f2=sin(2*pi*2*t)
       E plote as funções f e f2 no mesmo gráfico:
                      plot(t,f,t,f2)
       Verifique as cores dos gráficos. Agora digite:
                      plot(t,f,’b*’,t,f2,’c-.’)
       E verifique os efeitos.
       Agora tente os seguintes comandos:
                      stem(t,f)
                      stem(t,f2)



                                                                                                         3
Tópicos em Processamento de Sinais
                                                                        Departamento de Engenharia Elétrica
                                                                                   Faculdade de Tecnologia
                                                                                    Universidade de Brasília


        O que estes comandos fazem? Digite help stem, e estude o funcionamento desta função.
Tente mudar as cores dos traçados desta função. Note que a função não é tão flexível quanto a cores
do traçado quanto a função plot.


3) Geração de sinais mais complexos

       Digite os seguintes vetores:
              A=[0 1 2 3 4 5 6];
              B=[0 2 4 6 8 10 12];
       Tente multiplicar A*B. Note que o Matlab não realizará tal operação. O fato é que o Matlab
sempre interpretará o vetor como uma matriz, e o programa sempre interpreta uma multiplicação
como uma multiplicação de matrizes. Entretanto, há uma opção que permite ao usuário fazer uma
multiplicação ponto a ponto de dois vetores ou matrizes (isto é o primeiro elemento do resultado é o
produto dos primeiros elementos dos fatores, o segundo elemento do resultado é o produto dos
segundos elementos dos fatores, e assim por diante). Tente digitar:


       C=A.*B


       Note que o vetor C é o resultado da multiplicação ponto a ponto do dos vetores A e B.


Exercício 3
       Queremos plotar a seguinte função no intervalo 0<x<4:
              y(x)=(x-1)(x-2)
       Para isto, criamos primeiro o vetor representando a variável x, e em seguida a função em
questão:
              x=0:0.05:4;
              y=(x-1).*(x-2);
              plot(x,y)


       Note o comando “.*”. Cada expressão entre parênteses é um novo vetor, e os vetores são
multiplicados ponto a ponto, resultando no efeito desejado.
       Agora geraremos a função:
              y(x)=x3-6x2+11x-6


                                                                                                          4
Tópicos em Processamento de Sinais
                                                                         Departamento de Engenharia Elétrica
                                                                                    Faculdade de Tecnologia
                                                                                     Universidade de Brasília


       Para isto, criamos primeiro o vetor representando a variável x, e em seguida a função em
questão:


               x=0:0.05:4;
               y=x.^3-6*x.^2+11*x-6;
               plot(x,y)


       Note que o operador “.^” é também um operador ponto a ponto, que eleve cada elemento da
matriz à potência desejada. Tente digitar x^2, e veja que este comando não funcionará. Tente
descobrir porque (lembre-se que o Matlab sempre assume operações matriciais).


PROBLEMAS
1) Gere e plot a função f(t)=exp(-t)sin(2*5*pi*t), no intervalo 0<x<6. Use várias escolhas de
   intervalo para o eixo x: 0.1 sec., 0.05 sec., etc., e escolha o que tem melhor aparência.
2) Ache graficamente as raízes da função y=x3+2x2-x+1. (Dica: procure, por tentativa e erro o
   intervalo, a o período de amostragem do eixo x, realizando sucessivas plotagens das tentativas).
3) Plote a seguinte função: y=sin(x)*cos(2x)/(2+sin(x)). Escolha um eixo x apropriado (Não se esqueça
  que as multiplicações e divisões devem ser operações ponto a ponto).
4) Gere a função f(t)=sin(2*pi*10*t), no intervalo 0<x<10. Qual é a freqüência desta senóide? Use
   as seguintes escolhas de freqüência de amostragem: 5 Hz, 10 Hz, 20 Hz, 40 Hz, e 200 Hz. Use a
   função stem. Observe bem o efeito, pois será analisado na próxima aula.
5) Gere a função f(t)=exp(-t)sin(2*5*pi*t), e depois plote um histograma da mesma. Dica: use a
   função intro, e observe o uso da função bar. Em seguida digite help bar, para analisar aquela
   função.




                                                                                                           5
Tópicos em Processamento de Sinais
                                                                       Departamento de Engenharia Elétrica
                                                                                  Faculdade de Tecnologia
                                                                                   Universidade de Brasília




                                   EXERCÍCIOS COM O MATLAB
       Nesta seção, veremos algumas funções extras do Matlab. Primeiramente, consideremos o
seguinte trecho a seguir. Analise atentamente o programa abaixo (consulte o help para as funções
que você não conhece):

% exemplo: geracão de uma forma de onda ruidosa
t=0:0.01:pi;         %linha 1
y=2*sin(5*t);        %linha 2
figure(GCF)          %linha 3
plot(t,y)            %linha 4
pause                %linha 5
ruido=randn(1,length(t)); %linha 6
plot(t,ruido)        %linha 7
pause                %linha 8
y_ruido=y+ruido;     %linha 9
plot(t,y_ruido);     %linha 10

       Execute o programa. A linha 1 cria o vetor do tempo de amostragem. A linha 2 cria uma
função senoidal (qual é a freqüência?). A linha três faz com que a janela com o gráfico seja
colocada à frente de todas as outras. A linha 4 plota uma senóide, como mostrado abaixo:
                          2


                        1.5


                          1


                        0.5


                          0


                        -0.5


                          -1


                        -1.5


                          -2
                               0    0.5   1   1.5    2      2.5    3      3.5



        O comando pause, na linha 5, causa uma pausa no programa. Para continuar o programa, o
usuário deve pressionar <Enter>. [Pergunta: o que acontece se este comando for substituído por
pause(2)? Dica: use o comando help].
        A linha 6 utiliza o comando randn (utilize o help para aprender sobre este comando). Este
comando gera uma seqüência de números aleatórios com distribuição normal, com uma linha e
tantas colunas quanto for o comprimento do vetor t. O comando lenght(t) fornece o número de
elementos de t. Observe a plotagem do sinal de ruído:

                                                                                                         6
Tópicos em Processamento de Sinais
                                                                                 Departamento de Engenharia Elétrica
                                                                                            Faculdade de Tecnologia
                                                                                             Universidade de Brasília



                       3



                       2



                       1



                       0



                      -1



                      -2



                      -3
                           0            0.5     1       1.5   2    2.5       3           3.5



        Em seguida, a linha 9 calcula uma nova variável y_noise, que é o sinal senoidal mais o
ruído. Observe o resultado:
                               4


                               3


                               2


                               1


                               0


                               -1


                               -2


                               -3


                               -4


                               -5
                                    0     0.5       1   1.5   2   2.5    3         3.5



       Neste exemplo, você aprendeu como gerar um sinal com ruído.
       Agora, vejamos outros comandos. Para isto considere o seguinte código:
% Exemplo 2
A=[1 2 3; 4 5 6]
B=[3 4 ; 3 6 ; 7 8]
C=[1 2 3 ; 4 5 6 ; 7 8 9];
D=[5 6 ; 7 8 ; 9 10];
pause
size(A)
size(B)
pause
                                                                                                                   7
Tópicos em Processamento de Sinais
                                                                      Departamento de Engenharia Elétrica
                                                                                 Faculdade de Tecnologia
                                                                                  Universidade de Brasília

length(A)
length(B)

       Após executar o código acima, realize manualmente, e em seguida usando o Matlab, as
seguintes operações (indique quando a operação não é possível):

A*B=

B*A=

A*C=

A^2=

A.^2=

C^2=

C.^2=

A’=

C*inv(C)=

[B B B]=

[A;A;A]

        Veremos agora alguns comandos estatísticos. Considere o seguinte trecho de código:

% exemplo 3

A=[ 1 2 3 4 5 6 7]      %linha 1
B=mean(A)               %linha 2
C=std(A)                %linha 3
Pause                   %linha 4
RUIDOSO=randn(1,5000); %linha 5
figure(gcf)             %linha 6
plot(RUIDOSO)           %linha 7
title('sinal ruidoso') %linha 8
pause                   %linha 9
MEDIA_RUIDOSO=mean(RUIDOSO)   %linha 10
DP_RUIDOSO=std(RUIDOSO) %linha 11
Pause                   %linha 12
MAISRUIDO=5*randn(1,5000);    %linha 13
MEDIA=mean(MAISRUIDO)   %linha 14
DP=std(MAISRUIDO)       %linha 15



                                                                                                        8
Tópicos em Processamento de Sinais
                                                                         Departamento de Engenharia Elétrica
                                                                                    Faculdade de Tecnologia
                                                                                     Universidade de Brasília


        Use o comando help para estudar os comandos mean, e std. Execute o programa. Tome
cuidado de só incluir o ponto-e-vírgula quando necessário. Estes comandos calculam a média e o
desvio padrão dos vetores em questão (relembre na literatura o que estes termos significam). Na
linha 2, o resultado, B, será a média dos elementos do vetor A Na linha 3, o resultado C será o
desvio padrão dos elementos do vetor A. Calcule A e B manualmente, e cheque os resultados com
os resultados do Matlab.
        Na linha 5 um sinal de ruído normal é gerado, e é plotado na linha 6. A média e o desvio
padrão são calculados e mostrados nas linhas 10 e 11. Note que a função randn gera ruído aleatório
com média 0, e desvio padrão 1 (na verdade, próximos de 0 e 1). Para obter um ruído com maior
intensidade (maior desvio padrão), basta multiplicar o ruído pelo desvio padrão desejado, como é
feito nas linhas 13, 14 e 15. Analise com cuidado estas três últimas linhas.

EXERCÍCIOS

1) Usando o comando help, aprenda a lidar com os comandos max, min, mean, median, sort.
2) Usando o comando help, aprenda a usar os comandos fix, floor, ceil, round, mod,
   rem, sign.
3) Gere uma senóide com freqüência de 50 Hz e amplitude 3V, amostrada a uma freqüência de
   amostragem de 1 kHz. Adicione a esta senóide ruído gaussiano com desvio padrão de 2V. Plote
   o sinal resultante. Determine os valores máximo e mínimo deste sinal. Não se esqueça de incluir
   título e unidades. Procure plotar o sinal de forma que suas características fiquem claras ao leitor
   (deve ficar claro que o sinal é uma senóide com ruído).
4) Usando o comando help square, aprenda como gerar uma onda quadrada. Gere uma onda
   quadrada de 10 Hz, amostrada a uma freqüência de 1 KHz.




                                                                                                           9
Tópicos em Processamento de Sinais
                                                                           Departamento de Engenharia Elétrica
                                                                                      Faculdade de Tecnologia
                                                                                       Universidade de Brasília


                              REVISÃO: NÚMEROS COMPLEXOS


1) Representação dos Números Complexos
        Números complexos são uma estrutura criada como uma extensão dos números reais. À
primeira vista, esta estrutura parece ser artificial e inútil. Entretanto, na prática suas aplicações são
inúmeras. Este capítulo apresentará uma revisão resumida do tópico, devida à sua importância nas
séries de Fourier.
       Um número complexo é um par ordenado de números reais (R,I), e é muito usualmente
representado na seguinte forma:
                       C=R+iI, ou C=R+jI
      Sendo que matemáticos preferem o uso do i, enquanto os engenheiros preferem o j. R é
chamado parte real, e I é chamado parte imaginária do número complexo. Note que se I é zero, o
número se transforma em puramente complexo, e se R é zero, o número é puramente imaginário.
       Os números complexos seguem certas regras algébricas, que a princípio parecem estranhas,
mas que permitem a extensão de várias técnicas matemáticas, bem como possibilitam um grande
números de aplicações. É muito comum se representar os números complexos em um plano
ordenado x,y, da forma ilustrada na Figura 1.


                                        imaginario


                                                          (x,y)
                            M cos(α)

                                           M

                                           a=tan-1(y/x)

                                               X=M sin(α)         Real

                      Figura 1 - Representação gráfica de um número complexo


        O módulo ou magnitude M de um número complexo é representado geometricamente pela
reta ligando a origem à coordenado do par ordenado, e é definido como:
                       M=sqrt(x2+y2)
       O ângulo ou fase α, do número complexo é o ângulo entre a reta mencionada e o eixo x, e é
definido como:
                       α=tan-1(I/R)
       É fácil mostrar, observando a geometria da Figura 1 que:
                                                                                                            10
Tópicos em Processamento de Sinais
                                                                     Departamento de Engenharia Elétrica
                                                                                Faculdade de Tecnologia
                                                                                 Universidade de Brasília


                             R=M cos(α)
                             I=M sin(α)
       Muitas vezes o número complexo é representado por seu módulo e sua fase, da seguinte
maneira:
                             M∠α


Exercício 1:


          Considere os seguintes números:
                    A=1+j2
                    B=-2+j3
                    C=4-j1
                    D=-2-j2
1) Plote manualmente cada um do números, e enumere em que quadrante o número está (1o., 2o.,
   3o., ou 4o.) e depois plote os mesmo usando o Matlab (plot(A) plota o número complexo, caso o
   mesmo realmente seja complexo).
2) Para cada número, calcule manualmente o módulo M, e depois faça os cálculos com o Matlab
   (comando abs(A)). Confira os resultados com os cálculos manuais.
3) Calcule manualmente os ângulos α (atente para os quadrantes) e em seguida repita os cálculos
   em Matlab (comando atan(x/y)). Tente também a função atan2(x/y), e observe que a mesma
   leva em consideração o quadrante em que o número está.
4) A partir dos valores de M e α calculados, determine x e y. Faça o mesmo em Matlab (Exemplo,
   x=M*cos(alfa), y=M*sin(alfa)).
5) Digite A=1+j2, e em seguida, digite:
          real(A)
          imag(A)
O que acontece? Qual é a função dos comandos acima?1
6) Digite o seguinte código:
A=[ 1+j*2 ; 2+j*3 ; 4-j*1 ; 2-j*2 ]
plot(A)
M=abs(A)
grid
alfa1=atan(real(A)./imag(A))
                                                                                                      11
Tópicos em Processamento de Sinais
                                                                           Departamento de Engenharia Elétrica
                                                                                      Faculdade de Tecnologia
                                                                                       Universidade de Brasília


alfa2=atan2(real(A),imag(A))
Areal=M.*cos(alfa2)
Aimag=M.*sin(alfa2)
        Tente entender todos os comandos. Note que os exercícios de 1 a 4 foram implementados
nesta linha. Note o caráter matricial (ou vetorial) das variáveis (preste atenção nos pontos do .*, e ./
.
6) Converta os seguintes números para a forma R+jI:
                 2 π/3
                 3 60o
                 4 π/2


2) Álgebra dos Números Complexos
         Os números complexos são sujeitos a regras de álgebra, algumas delas semelhantes à
álgebra dos números reais, e algumas diferentes. Quando os números complexos são puramente
reais, a álgebra simplesmente se transforma na álgebra dos números reais.


        Suponha os números complexos A e B:
                         A=Ar+ j Ai
                         B=Br+ j Bi
        Estes números complexos são sujeitos às seguintes regras:
Soma:                    A+B=(Ar + Br) + j ( Ai + Bi)
Valor de j:              j=i=sqrt(-1)
Quadrado de i:           i2=-1
Multiplicação:           A . B=( Ar+ j Ai).( Br+ j Bi)= Ar Br +j Ai Br+j BrAi+j2AiBi
                                                     = (ArBr - AiBi)+j (ArBi+AiBr)
Raiz n-ésima (fórmula de de Moivre):
                                           a+2kp
                          1/n    n
                         A =         |A| ∠ n


Complexo conjugado de R+jI :              R-jI
Multiplicação de um número complexo por seu conjugado:
                         (A+jB)(A-jB)=A2+B2        (note a eliminação da parte complexa)

                                                                                                            12
Tópicos em Processamento de Sinais
                                                                        Departamento de Engenharia Elétrica
                                                                                   Faculdade de Tecnologia
                                                                                    Universidade de Brasília




Eliminação de partes complexas no denominador:
                 A+jB = A+jB C-jD = (AC-BD) + j(AD-BC)
                 C+jD C+jD C-jD          C2+D2

Exercício 2
Suponha:
                 M= 1+j2
                 N= 3+j4
          Calcule primeiro manualmente, e depois em Matlab. Dê os resultados na forma R+jI :
1) M+N
2) MN
3) M/N
4) M2
5) sqrt(M)
6) M1/3
7) M1/5
8) Determine todas as raízes cúbicas de 8 (Fórmula de de Moivre ou Matlab)
9) Eleve todas as raízes encontradas em na questão 8 ao cubo.


3) Fórmula de Euler:
          Duas fórmulas fazem os números complexos muito úteis:
                        ejω = cos ω + j sin ω
                        e-jω = cos ω - j sin ω


          Ou equivalentemente:
                        cos ω = ejω + e-jω
                                     2
                        sin ω = e − e-jω
                                 jω

                                    j2
          Note que
                        cos ω = Re (ejω)
                        sin ω = Im (ejω)
                                                                                                         13
Tópicos em Processamento de Sinais
                                                                        Departamento de Engenharia Elétrica
                                                                                   Faculdade de Tecnologia
                                                                                    Universidade de Brasília




Exercício 3
1) Defina uma variável de tempo com 0<t<5, amostrada em intervalos de 0.01 segundos, e calcule a
   função
              f(t)=e2jπt
        Usando seus conhecimentos, tente prever o comportamento desta função. Note que a função
é formada por uma parte real senoidal, e uma parte imaginária cossenoidal. Plote a parte real e a
parte imaginária na Função no Matlab:
                      ParteReal=real(f);
                      ParteImag=imag(f);
                      subplot(2,1,1)
                      plot(t,ParteReal)
                      subplot(2,1,2)
                      plot(t,ParteImag)


2) A função também pode ser dividida em uma parte função módulo e fase. Tente prever a forma
   das funções módulo e fase da função seus conhecimentos. Use o Matlab para plotar estas
   funções:
                      Módulo=abs(f);
                      Fase=atan2(imag(f),real(f));
                      subplot(2,1,1)
                      plot(t,Módulo)
                      subplot(2,1,2)
                      plot(t,Fase)
3) Multiplique a função complexa f, calculada no exercício anterior, pelo número complexo 1+j1, e
   chame a nova função de f2. Plote as partes reais de f1 e f2 no mesmo gráfico. Observe o efeito da
   multiplicação por um número complexo. Por que este efeito ocorre? Preste bastante atenção a
   esta questão, pois é central para o entendimento posterior dos conceitos de resposta em
   freqüência, e FFT.
4) Gere a função f(t)=sin(2πt). Multiplique esta função por 1+j1, gerando f2. Plote no mesmo
   gráfico as partes imaginárias de f e f2. Note os efeitos, e explique-os.
                                          A FFT e a DFT

      O Matlab permite o cálculo fácil da DFT e da FFT. Se tivermos um vetor A, de n elementos,
a DFT do mesmo é:
                                                                                                         14
Tópicos em Processamento de Sinais
                                                                    Departamento de Engenharia Elétrica
                                                                               Faculdade de Tecnologia
                                                                                Universidade de Brasília

       FFTdeA=fft(A);
       E para a FFT inversa, é usada a seguinte forma:
       IFFTdeA=ifft(FFTdeA);
       Caso o número de elementos de A seja da forma 2k, o Matlab usa o algoritmo da FFT (mais
rápido). Caso contrário, é usado o algoritmo da DFT. Considere o seguinte exemplo:
t=(0:.01:.99);
f=sin(2*pi*2*t);
F=fft(f);
subplot(2,1,1)
plot(abs(F),'ko')
subplot(2,1,2)
plot(angle(F),'ko')

       O resultado é mostrado a seguir:

        50

        40

        30

        20

        10

         0
             0   10    20     30    40     50     60     70   80    90     100


         4


         2


         0

        -2


        -4
             0   10    20     30    40     50     60     70   80    90     100



       Note que foram plotados o ângulo e a fase da FFT. Isto porque o resultado é um vetor com
números complexos. Tente plotar o vetor sem a função abs. Explique a razão para o resultado
aparentemente absurdo.
       Neste exemplo, é calculada a DFT de 1 segundo de amostragem de uma senóide com 2 Hz.
                                                                                                     15
Tópicos em Processamento de Sinais
                                                                        Departamento de Engenharia Elétrica
                                                                                   Faculdade de Tecnologia
                                                                                    Universidade de Brasília


      Note que o resultado da fase foi estranho. A razão é que a fase é o resultado de divisões de
números muito pequenos por números muito pequenos, resultando num valor não significativo.
       Substitua agora a primeira linha por
                   t=(0:.01:1.3);
       e execute o programa. O resultado é mostrado a seguir:


         50

         40

         30

         20

         10

          0
               0        20        40          60       80         100           120            140


          4


          2


          0

          -2


          -4
               0        20        40          60       80         100           120            140



       Nota-se que neste último caso ocorreu o fenômeno do “leakage”. Este fenômeno não
ocorreu no primeiro caso porque as amostras completavam um ciclo completo (a menos de uma
amostra). Para que não ocorra leakage, é necessário que esta precaução seja tomada.
       Voltemos agora ao primeiro exemplo. Nota-se que o eixo dos x não corresponde ã
freqüência e sim ao número da amostra. Para que seja mostrada a amostra, é necessário que a
mesma seja calculada. Para tal, suponhamos que a freqüência de amostragem seja fs e que o sinal
contenha N amostras. Neste caso, a primeira amostra corresponderia à freqüência zero, e a amostra
N (que não existe, já que as amostras vão de 0 a N-1) corresponderia à freqüência de amostragem.
Assim, a freqüência de cada amostra, na DFT resultante corresponderia a fs/N. Por exemplo, a


                                                                                                         16
Tópicos em Processamento de Sinais
                                                                        Departamento de Engenharia Elétrica
                                                                                   Faculdade de Tecnologia
                                                                                    Universidade de Brasília


primeira amostra corresponderia à freqüência zero, a Segunda a fsN, a terceira a 2fs/N, e a n-ésima a
(n-1)fs/N.
       Outra observação importante é com respeito à amplitude. A amplitude da senóide no
exemplo é de 1 V, e a amplitude da DFT foi de 50. Isto se deve ao fato de que o resultado da
FFT é sempre multiplicado pelo número de amostras. Assim, para se Ter uma estimativa
confiável das componentes espectrais, é necessário que se divida o resultado por N.
       Tendo essas considerações em mente, execute o seguinte código:


clear              % Limpa variáveis
clf                % Limpa gráficos
t=(0:.01:.99);          % Gera instantes das amostras
fs=100;            % Freqüência de amostragem
N=length(t);       % Determina o número de amostras
f=1+sin(2*pi*10*t);% Amostra o sinal formado por
                   % uma cte + senóide
F=fft(f);          % Calcula a DFT
Fesc=F/N;          % Escalona para o valor correto
freq=(0:N-1)*fs/N; % Calcula eixo das freqüências
plot(freq,abs(Fesc),’ko’)    % Plota o módulo da DFT
xlabel(‘Freqüência ’)        % Label do eixo x
ylabel(‘Amplitude’)          % Label do eixo y

       O resultado é mostrado a seguir:




                                                                                                         17
Tópicos em Processamento de Sinais
                                                                           Departamento de Engenharia Elétrica
                                                                                      Faculdade de Tecnologia
                                                                                       Universidade de Brasília




                 1.4



                 1.2



                  1



                 0.8
     Amplitude




                 0.6



                 0.4



                 0.2



                  0
                       0   10   20   30     40       50     60   70   80        90       100
                                                 Freqüência




                                          FILTROS DIGITAIS

      O Matlab apresenta muitas funções que facilitam a implementação de filtros digitais.
Observe o help da função filter.
FILTER One-dimensional digital filter.
  Y = FILTER(B,A,X) filters the data in vector X with the
  filter described by vectors A and B to create the filtered
  data Y. The filter is a "Direct Form II Transposed"
  implementation of the standard difference equation:

  a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)
               - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

  If a(1) is not equal to 1, FILTER normalizes the filter
  coefficients by a(1).

  When X is a matrix, FILTER operates on the columns of X. When X
                                                                                                            18
Tópicos em Processamento de Sinais
                                                                      Departamento de Engenharia Elétrica
                                                                                 Faculdade de Tecnologia
                                                                                  Universidade de Brasília


  is an N-D array, FILTER operates along the first non-singleton
  dimension.

  [Y,Zf] = FILTER(B,A,X,Zi) gives access to initial and final
  conditions, Zi and Zf, of the delays. Zi is a vector of length
  MAX(LENGTH(A),LENGTH(B))-1 or an array of such vectors, one for
  each column of X.

  FILTER(B,A,X,[],DIM) or FILTER(B,A,X,Zi,DIM) operates along the
  dimension DIM.

  See also FILTER2, FILTFILT (in the Signal Processing Toolbox).

        Assim, a função tem, em geral, três argumentos: os vetores A e B, correspondentes aos
coeficientes dos filtros, e o vetor de entrada. O resultado da função é o vetor de saída.
        Antes de fazermos um exemplo com a função filter, vamos observar que o Matlab possui
várias ferramentas que permitem a determinação dos coeficientes A e B. Um exemplo é a função
butter. Observe o help desta função:


BUTTER Butterworth digital and analog filter design.
 [B,A] = BUTTER(N,Wn) designs an N'th order lowpass digital
 Butterworth filter and returns the filter coefficients in length
 N+1 vectors B and A. The cut-off frequency Wn must be
 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate.

  If Wn is a two-element vector, Wn = [W1 W2], BUTTER returns an
  order 2N bandpass filter with passband W1 < W < W2.
  [B,A] = BUTTER(N,Wn,'high') designs a highpass filter.
  [B,A] = BUTTER(N,Wn,'stop') is a bandstop filter if Wn = [W1 W2].

  When used with three left-hand arguments, as in
  [Z,P,K] = BUTTER(...), the zeros and poles are returned in
  length N column vectors Z and P, and the gain in scalar K.

  When used with four left-hand arguments, as in
  [A,B,C,D] = BUTTER(...), state-space matrices are returned.

  BUTTER(N,Wn,'s'), BUTTER(N,Wn,'high','s') and BUTTER(N,Wn,'stop','s')
  design analog Butterworth filters. In this case, Wn can be bigger
  than 1.0.

  See also BUTTORD, BESSELF, CHEBY1, CHEBY2, ELLIP, FREQZ, FILTER.

                                                                                                       19
Tópicos em Processamento de Sinais
                                                                         Departamento de Engenharia Elétrica
                                                                                    Faculdade de Tecnologia
                                                                                     Universidade de Brasília


Vê-se que esta função determina os coeficientes de um filtro de Butterworth de ordem n, com uma
freqüência de corte fc. A freqüência de corte é indicada de forma que o valor 1 corresponda à
metade da freqüência de amostragem fs. Por exemplo, se fs=100Hz, 0.1 corresponderia a uma
freqüência de corte de 5 Hz.
       Como exemplo, será filtrada uma senóide de 15 Hz, amostrada a 100 Hz, por um filtro com
fc=10 Hz.


clear
clf
t=(0:.01:1);
f=sin(2*pi*5*t);     % amostragem do sinal
subplot(2,1,1)
plot(t,f)            % Sinal de entrada
                                                          ª
[B,A]=butter(1,0.1); % Calcula coeficientes do filtro de 2 ordem,
                     % fs/2=50Hz e fo=5Hz, entao Wn=5/50=0.1
saida=filter(B,A,f); % Filtra o sinal. Resultando no vetor de
                     % saída.
subplot(2,1,2)
plot(t,saida)

       Execute este código, e explique o resultado.


                                        EXERCÍCIOS

1) Gerar um sinal f(x)=1+sin(2100t), amostrado a 1KHz.
2) Passar o sinal por um filtro passa-baixas Butterworth com fc=50 Hz.
3) Passar o sinal por um filtro passa-baixas Butterworth com fc=50 Hz.
4) O Matlab possui a função freqz, que permite plotar a resposta em freqüência de filtros digitais.
   Examine o help desta função, e use-a para plotar a resposta em freqüência do filtro do último
   exemplo.




                                                                                                          20

More Related Content

What's hot

反応時間データをどう分析し図示するか
反応時間データをどう分析し図示するか反応時間データをどう分析し図示するか
反応時間データをどう分析し図示するかSAKAUE, Tatsuya
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみたTakashi Yamane
 
인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개Young-Min kang
 
Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...
Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...
Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...Luiz Avelar
 
06. paquímetro sistema inglês
06. paquímetro  sistema inglês06. paquímetro  sistema inglês
06. paquímetro sistema inglêsEdvaldo Viana
 
第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)RCCSRENKEI
 
Yarım kalıp sarım
Yarım kalıp sarımYarım kalıp sarım
Yarım kalıp sarımuguralp01
 
Rのオブジェクト
RのオブジェクトRのオブジェクト
RのオブジェクトItoshi Nikaido
 
forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析Satoshi Kato
 
Analise de funções de transferencia de malha fechada com Matlab
Analise de funções de transferencia de malha fechada com MatlabAnalise de funções de transferencia de malha fechada com Matlab
Analise de funções de transferencia de malha fechada com MatlabDavid Luna Santos
 
一般線形モデル
一般線形モデル一般線形モデル
一般線形モデルMatsuiRyo
 
09.micrômetro sistema métrico
09.micrômetro  sistema métrico09.micrômetro  sistema métrico
09.micrômetro sistema métricoEdvaldo Viana
 
R言語で学ぶマーケティング分析 競争ポジショニング戦略
R言語で学ぶマーケティング分析 競争ポジショニング戦略R言語で学ぶマーケティング分析 競争ポジショニング戦略
R言語で学ぶマーケティング分析 競争ポジショニング戦略Yohei Sato
 
Distribuicao de probabilidades
Distribuicao de probabilidadesDistribuicao de probabilidades
Distribuicao de probabilidadesvagnergeovani
 
Pythonでカスタム状態空間モデル
Pythonでカスタム状態空間モデルPythonでカスタム状態空間モデル
Pythonでカスタム状態空間モデルHamage9
 
Teste do Qui quadrado
Teste do Qui quadradoTeste do Qui quadrado
Teste do Qui quadradoFabiane Paim
 

What's hot (20)

Realtime
RealtimeRealtime
Realtime
 
反応時間データをどう分析し図示するか
反応時間データをどう分析し図示するか反応時間データをどう分析し図示するか
反応時間データをどう分析し図示するか
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
 
인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개
 
Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...
Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...
Manual de Fórmulas Técnicas.UNIDADES; ÁREAS; VOLUME; ESTÁTICA; DINÂMICA; RESI...
 
06. paquímetro sistema inglês
06. paquímetro  sistema inglês06. paquímetro  sistema inglês
06. paquímetro sistema inglês
 
第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)
 
Yarım kalıp sarım
Yarım kalıp sarımYarım kalıp sarım
Yarım kalıp sarım
 
Sistemas supervisórios (SCADA Systems)
Sistemas supervisórios (SCADA Systems)Sistemas supervisórios (SCADA Systems)
Sistemas supervisórios (SCADA Systems)
 
Rのオブジェクト
RのオブジェクトRのオブジェクト
Rのオブジェクト
 
forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析
 
Analise de funções de transferencia de malha fechada com Matlab
Analise de funções de transferencia de malha fechada com MatlabAnalise de funções de transferencia de malha fechada com Matlab
Analise de funções de transferencia de malha fechada com Matlab
 
一般線形モデル
一般線形モデル一般線形モデル
一般線形モデル
 
09.micrômetro sistema métrico
09.micrômetro  sistema métrico09.micrômetro  sistema métrico
09.micrômetro sistema métrico
 
Apresentação cnc resumida
Apresentação cnc resumidaApresentação cnc resumida
Apresentação cnc resumida
 
R言語で学ぶマーケティング分析 競争ポジショニング戦略
R言語で学ぶマーケティング分析 競争ポジショニング戦略R言語で学ぶマーケティング分析 競争ポジショニング戦略
R言語で学ぶマーケティング分析 競争ポジショニング戦略
 
Distribuicao de probabilidades
Distribuicao de probabilidadesDistribuicao de probabilidades
Distribuicao de probabilidades
 
Pythonでカスタム状態空間モデル
Pythonでカスタム状態空間モデルPythonでカスタム状態空間モデル
Pythonでカスタム状態空間モデル
 
Introduction to-matlab
Introduction to-matlabIntroduction to-matlab
Introduction to-matlab
 
Teste do Qui quadrado
Teste do Qui quadradoTeste do Qui quadrado
Teste do Qui quadrado
 

Similar to 15444311 tutorial-mat lab

Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1Gabriel Costa
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJRenan Prata
 
Controle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdfControle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdfCarlosAlexisAlvarado4
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptssuserd654cb1
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptssuserd654cb1
 
Análise de sinais e sistemas
Análise de sinais e sistemasAnálise de sinais e sistemas
Análise de sinais e sistemasReggae Strong
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Vibracoes
VibracoesVibracoes
Vibracoesaluno29
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao OctavePeslPinguim
 
TRANSFORMADA DE FOURIER PYTHON.pdf
TRANSFORMADA DE FOURIER PYTHON.pdfTRANSFORMADA DE FOURIER PYTHON.pdf
TRANSFORMADA DE FOURIER PYTHON.pdfJeanLima84
 
Curso de Matlab basico
Curso de Matlab basicoCurso de Matlab basico
Curso de Matlab basicoGabriel Costa
 
Cap9 - exemplos resolvidos em matlab
Cap9 - exemplos resolvidos em matlabCap9 - exemplos resolvidos em matlab
Cap9 - exemplos resolvidos em matlabSandro Sena
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 

Similar to 15444311 tutorial-mat lab (20)

Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Slides 9 erm
Slides 9 ermSlides 9 erm
Slides 9 erm
 
Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJ
 
Controle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdfControle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdf
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
Análise de sinais e sistemas
Análise de sinais e sistemasAnálise de sinais e sistemas
Análise de sinais e sistemas
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Apostila vol1 matlab
Apostila vol1 matlabApostila vol1 matlab
Apostila vol1 matlab
 
Vibracoes
VibracoesVibracoes
Vibracoes
 
Calculo numérico
Calculo numéricoCalculo numérico
Calculo numérico
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao Octave
 
TRANSFORMADA DE FOURIER PYTHON.pdf
TRANSFORMADA DE FOURIER PYTHON.pdfTRANSFORMADA DE FOURIER PYTHON.pdf
TRANSFORMADA DE FOURIER PYTHON.pdf
 
Curso de Matlab basico
Curso de Matlab basicoCurso de Matlab basico
Curso de Matlab basico
 
GOP Software Manual
GOP Software ManualGOP Software Manual
GOP Software Manual
 
Cap9 - exemplos resolvidos em matlab
Cap9 - exemplos resolvidos em matlabCap9 - exemplos resolvidos em matlab
Cap9 - exemplos resolvidos em matlab
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Complexidade algoritmos
Complexidade algoritmosComplexidade algoritmos
Complexidade algoritmos
 

15444311 tutorial-mat lab

  • 1. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília MATLAB 1) Introdução O aplicativo Matlab é uma das ferramentas mais úteis para as áreas de processamento de sinais, controle, e outras aplicações. O “Mat” do nome Matlab está relacionado com “Matriz”, ou seja, é um laboratório que permite a manipulação eficiente de matrizes. Pode-se dizer também que o Matlab permite também a manipulação eficiente de vetores, já que um vetor de tamanho N pode ser visto como uma matriz de Nx1. Uma das melhores formas de se familiarizar com o Matlab é através do comando intro, que provê uma turnê pelas características básicas do programa. Exercício 1 Use o comando intro e, com atenção, procure entender todos os exemplos fornecidos. A aplicação predominante no presente curso será o processamento digital se sinais. Para isto, preparamos algumas técnicas em Matlab que facilitarão o uso do aplicativo para esta tarefa. 2) Geração de Sinais Amostrados Como primeiro exemplo, geraremos a seguinte função senoidal no Matlab: f(t)=sin(2*pi*fo*t) Onde fo=1 Hz. A função é mostrada na seguinte figura: Senoide de 1 Hz 1 0.8 0.6 0.4 0.2 0 f(t) -0.2 -0.4 -0.6 -0.8 -1 0 0.2 0.4 0.6 0.8 1 Tempo (seg.) 1
  • 2. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Para permitir o processamento de sinais por computador, o sinal analógico deve ser digitalizado por um conversor analógico para digital (A/D). Neste processo o sinal é amostrado em vários instantes, em intervalos de tempo constante. O intervalo de tempo é o período de amostragem (T), e o recíproco de T é a freqüência de amostragem (fs= 1/T). A unidade de tempo do período de amostragem em geral é segundos, e a de Freqüência é em Hz. 100 Hz significa que 100 amostras do sinal são tomadas em 1 segundo. Pode-se simular funções amostradas no Matlab. O exemplo abaixo mostra como se pode simular a amostragem de uma senóide no Matlab: Exercício 2 Siga os passos descritos para simular a amostragem de uma onda senoidal no seguinte exemplo. Digite os comandos na Matlab, e observe os efeitos. 1) Crie o eixo do tempo: t=0:0.05:1; O comando acima cria uma variável (vetor) com os elementos 0, 0.05, 0.1, ..., 1. O ponto e vírgula evita que a variável seja exibida na tela. Tente rodar o comando acima e observe o que acontece. Caso você tenha errado, e o vetor inteiro comece a aparecer na tela, você pode parar o processo usando CTRL-C. O comando size(t) exibe o tamanho da matriz t, e o comando length(t) mostrará o comprimento do vetor. Experimente estes comandos. 2) Crie a função: f=sin(2*pi*t); O comando acima cria um vetor cujas componentes são a função senoidal calculada a cada valor do vetor t. Assim, no Matlab, você pode calcular o seno de um vetor, ou mesmo de uma matriz. Execute este comando. 3) Plotar a função: plot(t,f) Este comando faz a plotagem do sinal, tendo f no eixo y, e o correspondente t no eixo x. Execute este comando. 4) Coloque o Titulo e as variáveis dos eixos x e y: title(‘Funcao Senoidal’) xlabel(‘Tempo (segundos)’) ylabel(‘Amplitude (Volts)’) 2
  • 3. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Experimente os comandos acima. Tente também os seguintes comandos: plot(f,t) plot(f) plot(t) O que aconteceu no primeiro comando? No segundo comando, a senóide foi plotada, mas o eixo y mostrou simplesmente o número da amostra, mas não o tempo correspondente a cada abcissa y. Explique o que acontece no terceiro exemplo. Tente também as seguintes opções: plot(t,f,’*’) plot(t,f,’b*’) plot(t,f,’.’) plot(t,f,’c.’) plot(t,f,’-’) plot(t,f,’y-’) Observe as cores e características dos gráficos. Agora digite help plot, e leia cuidadosamente as descrições da função plot. Agora digite a seguinte função: grid Note o efeito da função, e digite help grid, para ver as características desta função. Agora gere uma segunda função: f2=sin(2*pi*2*t) E plote as funções f e f2 no mesmo gráfico: plot(t,f,t,f2) Verifique as cores dos gráficos. Agora digite: plot(t,f,’b*’,t,f2,’c-.’) E verifique os efeitos. Agora tente os seguintes comandos: stem(t,f) stem(t,f2) 3
  • 4. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília O que estes comandos fazem? Digite help stem, e estude o funcionamento desta função. Tente mudar as cores dos traçados desta função. Note que a função não é tão flexível quanto a cores do traçado quanto a função plot. 3) Geração de sinais mais complexos Digite os seguintes vetores: A=[0 1 2 3 4 5 6]; B=[0 2 4 6 8 10 12]; Tente multiplicar A*B. Note que o Matlab não realizará tal operação. O fato é que o Matlab sempre interpretará o vetor como uma matriz, e o programa sempre interpreta uma multiplicação como uma multiplicação de matrizes. Entretanto, há uma opção que permite ao usuário fazer uma multiplicação ponto a ponto de dois vetores ou matrizes (isto é o primeiro elemento do resultado é o produto dos primeiros elementos dos fatores, o segundo elemento do resultado é o produto dos segundos elementos dos fatores, e assim por diante). Tente digitar: C=A.*B Note que o vetor C é o resultado da multiplicação ponto a ponto do dos vetores A e B. Exercício 3 Queremos plotar a seguinte função no intervalo 0<x<4: y(x)=(x-1)(x-2) Para isto, criamos primeiro o vetor representando a variável x, e em seguida a função em questão: x=0:0.05:4; y=(x-1).*(x-2); plot(x,y) Note o comando “.*”. Cada expressão entre parênteses é um novo vetor, e os vetores são multiplicados ponto a ponto, resultando no efeito desejado. Agora geraremos a função: y(x)=x3-6x2+11x-6 4
  • 5. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Para isto, criamos primeiro o vetor representando a variável x, e em seguida a função em questão: x=0:0.05:4; y=x.^3-6*x.^2+11*x-6; plot(x,y) Note que o operador “.^” é também um operador ponto a ponto, que eleve cada elemento da matriz à potência desejada. Tente digitar x^2, e veja que este comando não funcionará. Tente descobrir porque (lembre-se que o Matlab sempre assume operações matriciais). PROBLEMAS 1) Gere e plot a função f(t)=exp(-t)sin(2*5*pi*t), no intervalo 0<x<6. Use várias escolhas de intervalo para o eixo x: 0.1 sec., 0.05 sec., etc., e escolha o que tem melhor aparência. 2) Ache graficamente as raízes da função y=x3+2x2-x+1. (Dica: procure, por tentativa e erro o intervalo, a o período de amostragem do eixo x, realizando sucessivas plotagens das tentativas). 3) Plote a seguinte função: y=sin(x)*cos(2x)/(2+sin(x)). Escolha um eixo x apropriado (Não se esqueça que as multiplicações e divisões devem ser operações ponto a ponto). 4) Gere a função f(t)=sin(2*pi*10*t), no intervalo 0<x<10. Qual é a freqüência desta senóide? Use as seguintes escolhas de freqüência de amostragem: 5 Hz, 10 Hz, 20 Hz, 40 Hz, e 200 Hz. Use a função stem. Observe bem o efeito, pois será analisado na próxima aula. 5) Gere a função f(t)=exp(-t)sin(2*5*pi*t), e depois plote um histograma da mesma. Dica: use a função intro, e observe o uso da função bar. Em seguida digite help bar, para analisar aquela função. 5
  • 6. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília EXERCÍCIOS COM O MATLAB Nesta seção, veremos algumas funções extras do Matlab. Primeiramente, consideremos o seguinte trecho a seguir. Analise atentamente o programa abaixo (consulte o help para as funções que você não conhece): % exemplo: geracão de uma forma de onda ruidosa t=0:0.01:pi; %linha 1 y=2*sin(5*t); %linha 2 figure(GCF) %linha 3 plot(t,y) %linha 4 pause %linha 5 ruido=randn(1,length(t)); %linha 6 plot(t,ruido) %linha 7 pause %linha 8 y_ruido=y+ruido; %linha 9 plot(t,y_ruido); %linha 10 Execute o programa. A linha 1 cria o vetor do tempo de amostragem. A linha 2 cria uma função senoidal (qual é a freqüência?). A linha três faz com que a janela com o gráfico seja colocada à frente de todas as outras. A linha 4 plota uma senóide, como mostrado abaixo: 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 0 0.5 1 1.5 2 2.5 3 3.5 O comando pause, na linha 5, causa uma pausa no programa. Para continuar o programa, o usuário deve pressionar <Enter>. [Pergunta: o que acontece se este comando for substituído por pause(2)? Dica: use o comando help]. A linha 6 utiliza o comando randn (utilize o help para aprender sobre este comando). Este comando gera uma seqüência de números aleatórios com distribuição normal, com uma linha e tantas colunas quanto for o comprimento do vetor t. O comando lenght(t) fornece o número de elementos de t. Observe a plotagem do sinal de ruído: 6
  • 7. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília 3 2 1 0 -1 -2 -3 0 0.5 1 1.5 2 2.5 3 3.5 Em seguida, a linha 9 calcula uma nova variável y_noise, que é o sinal senoidal mais o ruído. Observe o resultado: 4 3 2 1 0 -1 -2 -3 -4 -5 0 0.5 1 1.5 2 2.5 3 3.5 Neste exemplo, você aprendeu como gerar um sinal com ruído. Agora, vejamos outros comandos. Para isto considere o seguinte código: % Exemplo 2 A=[1 2 3; 4 5 6] B=[3 4 ; 3 6 ; 7 8] C=[1 2 3 ; 4 5 6 ; 7 8 9]; D=[5 6 ; 7 8 ; 9 10]; pause size(A) size(B) pause 7
  • 8. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília length(A) length(B) Após executar o código acima, realize manualmente, e em seguida usando o Matlab, as seguintes operações (indique quando a operação não é possível): A*B= B*A= A*C= A^2= A.^2= C^2= C.^2= A’= C*inv(C)= [B B B]= [A;A;A] Veremos agora alguns comandos estatísticos. Considere o seguinte trecho de código: % exemplo 3 A=[ 1 2 3 4 5 6 7] %linha 1 B=mean(A) %linha 2 C=std(A) %linha 3 Pause %linha 4 RUIDOSO=randn(1,5000); %linha 5 figure(gcf) %linha 6 plot(RUIDOSO) %linha 7 title('sinal ruidoso') %linha 8 pause %linha 9 MEDIA_RUIDOSO=mean(RUIDOSO) %linha 10 DP_RUIDOSO=std(RUIDOSO) %linha 11 Pause %linha 12 MAISRUIDO=5*randn(1,5000); %linha 13 MEDIA=mean(MAISRUIDO) %linha 14 DP=std(MAISRUIDO) %linha 15 8
  • 9. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Use o comando help para estudar os comandos mean, e std. Execute o programa. Tome cuidado de só incluir o ponto-e-vírgula quando necessário. Estes comandos calculam a média e o desvio padrão dos vetores em questão (relembre na literatura o que estes termos significam). Na linha 2, o resultado, B, será a média dos elementos do vetor A Na linha 3, o resultado C será o desvio padrão dos elementos do vetor A. Calcule A e B manualmente, e cheque os resultados com os resultados do Matlab. Na linha 5 um sinal de ruído normal é gerado, e é plotado na linha 6. A média e o desvio padrão são calculados e mostrados nas linhas 10 e 11. Note que a função randn gera ruído aleatório com média 0, e desvio padrão 1 (na verdade, próximos de 0 e 1). Para obter um ruído com maior intensidade (maior desvio padrão), basta multiplicar o ruído pelo desvio padrão desejado, como é feito nas linhas 13, 14 e 15. Analise com cuidado estas três últimas linhas. EXERCÍCIOS 1) Usando o comando help, aprenda a lidar com os comandos max, min, mean, median, sort. 2) Usando o comando help, aprenda a usar os comandos fix, floor, ceil, round, mod, rem, sign. 3) Gere uma senóide com freqüência de 50 Hz e amplitude 3V, amostrada a uma freqüência de amostragem de 1 kHz. Adicione a esta senóide ruído gaussiano com desvio padrão de 2V. Plote o sinal resultante. Determine os valores máximo e mínimo deste sinal. Não se esqueça de incluir título e unidades. Procure plotar o sinal de forma que suas características fiquem claras ao leitor (deve ficar claro que o sinal é uma senóide com ruído). 4) Usando o comando help square, aprenda como gerar uma onda quadrada. Gere uma onda quadrada de 10 Hz, amostrada a uma freqüência de 1 KHz. 9
  • 10. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília REVISÃO: NÚMEROS COMPLEXOS 1) Representação dos Números Complexos Números complexos são uma estrutura criada como uma extensão dos números reais. À primeira vista, esta estrutura parece ser artificial e inútil. Entretanto, na prática suas aplicações são inúmeras. Este capítulo apresentará uma revisão resumida do tópico, devida à sua importância nas séries de Fourier. Um número complexo é um par ordenado de números reais (R,I), e é muito usualmente representado na seguinte forma: C=R+iI, ou C=R+jI Sendo que matemáticos preferem o uso do i, enquanto os engenheiros preferem o j. R é chamado parte real, e I é chamado parte imaginária do número complexo. Note que se I é zero, o número se transforma em puramente complexo, e se R é zero, o número é puramente imaginário. Os números complexos seguem certas regras algébricas, que a princípio parecem estranhas, mas que permitem a extensão de várias técnicas matemáticas, bem como possibilitam um grande números de aplicações. É muito comum se representar os números complexos em um plano ordenado x,y, da forma ilustrada na Figura 1. imaginario (x,y) M cos(α) M a=tan-1(y/x) X=M sin(α) Real Figura 1 - Representação gráfica de um número complexo O módulo ou magnitude M de um número complexo é representado geometricamente pela reta ligando a origem à coordenado do par ordenado, e é definido como: M=sqrt(x2+y2) O ângulo ou fase α, do número complexo é o ângulo entre a reta mencionada e o eixo x, e é definido como: α=tan-1(I/R) É fácil mostrar, observando a geometria da Figura 1 que: 10
  • 11. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília R=M cos(α) I=M sin(α) Muitas vezes o número complexo é representado por seu módulo e sua fase, da seguinte maneira: M∠α Exercício 1: Considere os seguintes números: A=1+j2 B=-2+j3 C=4-j1 D=-2-j2 1) Plote manualmente cada um do números, e enumere em que quadrante o número está (1o., 2o., 3o., ou 4o.) e depois plote os mesmo usando o Matlab (plot(A) plota o número complexo, caso o mesmo realmente seja complexo). 2) Para cada número, calcule manualmente o módulo M, e depois faça os cálculos com o Matlab (comando abs(A)). Confira os resultados com os cálculos manuais. 3) Calcule manualmente os ângulos α (atente para os quadrantes) e em seguida repita os cálculos em Matlab (comando atan(x/y)). Tente também a função atan2(x/y), e observe que a mesma leva em consideração o quadrante em que o número está. 4) A partir dos valores de M e α calculados, determine x e y. Faça o mesmo em Matlab (Exemplo, x=M*cos(alfa), y=M*sin(alfa)). 5) Digite A=1+j2, e em seguida, digite: real(A) imag(A) O que acontece? Qual é a função dos comandos acima?1 6) Digite o seguinte código: A=[ 1+j*2 ; 2+j*3 ; 4-j*1 ; 2-j*2 ] plot(A) M=abs(A) grid alfa1=atan(real(A)./imag(A)) 11
  • 12. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília alfa2=atan2(real(A),imag(A)) Areal=M.*cos(alfa2) Aimag=M.*sin(alfa2) Tente entender todos os comandos. Note que os exercícios de 1 a 4 foram implementados nesta linha. Note o caráter matricial (ou vetorial) das variáveis (preste atenção nos pontos do .*, e ./ . 6) Converta os seguintes números para a forma R+jI: 2 π/3 3 60o 4 π/2 2) Álgebra dos Números Complexos Os números complexos são sujeitos a regras de álgebra, algumas delas semelhantes à álgebra dos números reais, e algumas diferentes. Quando os números complexos são puramente reais, a álgebra simplesmente se transforma na álgebra dos números reais. Suponha os números complexos A e B: A=Ar+ j Ai B=Br+ j Bi Estes números complexos são sujeitos às seguintes regras: Soma: A+B=(Ar + Br) + j ( Ai + Bi) Valor de j: j=i=sqrt(-1) Quadrado de i: i2=-1 Multiplicação: A . B=( Ar+ j Ai).( Br+ j Bi)= Ar Br +j Ai Br+j BrAi+j2AiBi = (ArBr - AiBi)+j (ArBi+AiBr) Raiz n-ésima (fórmula de de Moivre): a+2kp 1/n n A = |A| ∠ n Complexo conjugado de R+jI : R-jI Multiplicação de um número complexo por seu conjugado: (A+jB)(A-jB)=A2+B2 (note a eliminação da parte complexa) 12
  • 13. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Eliminação de partes complexas no denominador: A+jB = A+jB C-jD = (AC-BD) + j(AD-BC) C+jD C+jD C-jD C2+D2 Exercício 2 Suponha: M= 1+j2 N= 3+j4 Calcule primeiro manualmente, e depois em Matlab. Dê os resultados na forma R+jI : 1) M+N 2) MN 3) M/N 4) M2 5) sqrt(M) 6) M1/3 7) M1/5 8) Determine todas as raízes cúbicas de 8 (Fórmula de de Moivre ou Matlab) 9) Eleve todas as raízes encontradas em na questão 8 ao cubo. 3) Fórmula de Euler: Duas fórmulas fazem os números complexos muito úteis: ejω = cos ω + j sin ω e-jω = cos ω - j sin ω Ou equivalentemente: cos ω = ejω + e-jω 2 sin ω = e − e-jω jω j2 Note que cos ω = Re (ejω) sin ω = Im (ejω) 13
  • 14. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Exercício 3 1) Defina uma variável de tempo com 0<t<5, amostrada em intervalos de 0.01 segundos, e calcule a função f(t)=e2jπt Usando seus conhecimentos, tente prever o comportamento desta função. Note que a função é formada por uma parte real senoidal, e uma parte imaginária cossenoidal. Plote a parte real e a parte imaginária na Função no Matlab: ParteReal=real(f); ParteImag=imag(f); subplot(2,1,1) plot(t,ParteReal) subplot(2,1,2) plot(t,ParteImag) 2) A função também pode ser dividida em uma parte função módulo e fase. Tente prever a forma das funções módulo e fase da função seus conhecimentos. Use o Matlab para plotar estas funções: Módulo=abs(f); Fase=atan2(imag(f),real(f)); subplot(2,1,1) plot(t,Módulo) subplot(2,1,2) plot(t,Fase) 3) Multiplique a função complexa f, calculada no exercício anterior, pelo número complexo 1+j1, e chame a nova função de f2. Plote as partes reais de f1 e f2 no mesmo gráfico. Observe o efeito da multiplicação por um número complexo. Por que este efeito ocorre? Preste bastante atenção a esta questão, pois é central para o entendimento posterior dos conceitos de resposta em freqüência, e FFT. 4) Gere a função f(t)=sin(2πt). Multiplique esta função por 1+j1, gerando f2. Plote no mesmo gráfico as partes imaginárias de f e f2. Note os efeitos, e explique-os. A FFT e a DFT O Matlab permite o cálculo fácil da DFT e da FFT. Se tivermos um vetor A, de n elementos, a DFT do mesmo é: 14
  • 15. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília FFTdeA=fft(A); E para a FFT inversa, é usada a seguinte forma: IFFTdeA=ifft(FFTdeA); Caso o número de elementos de A seja da forma 2k, o Matlab usa o algoritmo da FFT (mais rápido). Caso contrário, é usado o algoritmo da DFT. Considere o seguinte exemplo: t=(0:.01:.99); f=sin(2*pi*2*t); F=fft(f); subplot(2,1,1) plot(abs(F),'ko') subplot(2,1,2) plot(angle(F),'ko') O resultado é mostrado a seguir: 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100 4 2 0 -2 -4 0 10 20 30 40 50 60 70 80 90 100 Note que foram plotados o ângulo e a fase da FFT. Isto porque o resultado é um vetor com números complexos. Tente plotar o vetor sem a função abs. Explique a razão para o resultado aparentemente absurdo. Neste exemplo, é calculada a DFT de 1 segundo de amostragem de uma senóide com 2 Hz. 15
  • 16. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Note que o resultado da fase foi estranho. A razão é que a fase é o resultado de divisões de números muito pequenos por números muito pequenos, resultando num valor não significativo. Substitua agora a primeira linha por t=(0:.01:1.3); e execute o programa. O resultado é mostrado a seguir: 50 40 30 20 10 0 0 20 40 60 80 100 120 140 4 2 0 -2 -4 0 20 40 60 80 100 120 140 Nota-se que neste último caso ocorreu o fenômeno do “leakage”. Este fenômeno não ocorreu no primeiro caso porque as amostras completavam um ciclo completo (a menos de uma amostra). Para que não ocorra leakage, é necessário que esta precaução seja tomada. Voltemos agora ao primeiro exemplo. Nota-se que o eixo dos x não corresponde ã freqüência e sim ao número da amostra. Para que seja mostrada a amostra, é necessário que a mesma seja calculada. Para tal, suponhamos que a freqüência de amostragem seja fs e que o sinal contenha N amostras. Neste caso, a primeira amostra corresponderia à freqüência zero, e a amostra N (que não existe, já que as amostras vão de 0 a N-1) corresponderia à freqüência de amostragem. Assim, a freqüência de cada amostra, na DFT resultante corresponderia a fs/N. Por exemplo, a 16
  • 17. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília primeira amostra corresponderia à freqüência zero, a Segunda a fsN, a terceira a 2fs/N, e a n-ésima a (n-1)fs/N. Outra observação importante é com respeito à amplitude. A amplitude da senóide no exemplo é de 1 V, e a amplitude da DFT foi de 50. Isto se deve ao fato de que o resultado da FFT é sempre multiplicado pelo número de amostras. Assim, para se Ter uma estimativa confiável das componentes espectrais, é necessário que se divida o resultado por N. Tendo essas considerações em mente, execute o seguinte código: clear % Limpa variáveis clf % Limpa gráficos t=(0:.01:.99); % Gera instantes das amostras fs=100; % Freqüência de amostragem N=length(t); % Determina o número de amostras f=1+sin(2*pi*10*t);% Amostra o sinal formado por % uma cte + senóide F=fft(f); % Calcula a DFT Fesc=F/N; % Escalona para o valor correto freq=(0:N-1)*fs/N; % Calcula eixo das freqüências plot(freq,abs(Fesc),’ko’) % Plota o módulo da DFT xlabel(‘Freqüência ’) % Label do eixo x ylabel(‘Amplitude’) % Label do eixo y O resultado é mostrado a seguir: 17
  • 18. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília 1.4 1.2 1 0.8 Amplitude 0.6 0.4 0.2 0 0 10 20 30 40 50 60 70 80 90 100 Freqüência FILTROS DIGITAIS O Matlab apresenta muitas funções que facilitam a implementação de filtros digitais. Observe o help da função filter. FILTER One-dimensional digital filter. Y = FILTER(B,A,X) filters the data in vector X with the filter described by vectors A and B to create the filtered data Y. The filter is a "Direct Form II Transposed" implementation of the standard difference equation: a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na) If a(1) is not equal to 1, FILTER normalizes the filter coefficients by a(1). When X is a matrix, FILTER operates on the columns of X. When X 18
  • 19. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília is an N-D array, FILTER operates along the first non-singleton dimension. [Y,Zf] = FILTER(B,A,X,Zi) gives access to initial and final conditions, Zi and Zf, of the delays. Zi is a vector of length MAX(LENGTH(A),LENGTH(B))-1 or an array of such vectors, one for each column of X. FILTER(B,A,X,[],DIM) or FILTER(B,A,X,Zi,DIM) operates along the dimension DIM. See also FILTER2, FILTFILT (in the Signal Processing Toolbox). Assim, a função tem, em geral, três argumentos: os vetores A e B, correspondentes aos coeficientes dos filtros, e o vetor de entrada. O resultado da função é o vetor de saída. Antes de fazermos um exemplo com a função filter, vamos observar que o Matlab possui várias ferramentas que permitem a determinação dos coeficientes A e B. Um exemplo é a função butter. Observe o help desta função: BUTTER Butterworth digital and analog filter design. [B,A] = BUTTER(N,Wn) designs an N'th order lowpass digital Butterworth filter and returns the filter coefficients in length N+1 vectors B and A. The cut-off frequency Wn must be 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. If Wn is a two-element vector, Wn = [W1 W2], BUTTER returns an order 2N bandpass filter with passband W1 < W < W2. [B,A] = BUTTER(N,Wn,'high') designs a highpass filter. [B,A] = BUTTER(N,Wn,'stop') is a bandstop filter if Wn = [W1 W2]. When used with three left-hand arguments, as in [Z,P,K] = BUTTER(...), the zeros and poles are returned in length N column vectors Z and P, and the gain in scalar K. When used with four left-hand arguments, as in [A,B,C,D] = BUTTER(...), state-space matrices are returned. BUTTER(N,Wn,'s'), BUTTER(N,Wn,'high','s') and BUTTER(N,Wn,'stop','s') design analog Butterworth filters. In this case, Wn can be bigger than 1.0. See also BUTTORD, BESSELF, CHEBY1, CHEBY2, ELLIP, FREQZ, FILTER. 19
  • 20. Tópicos em Processamento de Sinais Departamento de Engenharia Elétrica Faculdade de Tecnologia Universidade de Brasília Vê-se que esta função determina os coeficientes de um filtro de Butterworth de ordem n, com uma freqüência de corte fc. A freqüência de corte é indicada de forma que o valor 1 corresponda à metade da freqüência de amostragem fs. Por exemplo, se fs=100Hz, 0.1 corresponderia a uma freqüência de corte de 5 Hz. Como exemplo, será filtrada uma senóide de 15 Hz, amostrada a 100 Hz, por um filtro com fc=10 Hz. clear clf t=(0:.01:1); f=sin(2*pi*5*t); % amostragem do sinal subplot(2,1,1) plot(t,f) % Sinal de entrada ª [B,A]=butter(1,0.1); % Calcula coeficientes do filtro de 2 ordem, % fs/2=50Hz e fo=5Hz, entao Wn=5/50=0.1 saida=filter(B,A,f); % Filtra o sinal. Resultando no vetor de % saída. subplot(2,1,2) plot(t,saida) Execute este código, e explique o resultado. EXERCÍCIOS 1) Gerar um sinal f(x)=1+sin(2100t), amostrado a 1KHz. 2) Passar o sinal por um filtro passa-baixas Butterworth com fc=50 Hz. 3) Passar o sinal por um filtro passa-baixas Butterworth com fc=50 Hz. 4) O Matlab possui a função freqz, que permite plotar a resposta em freqüência de filtros digitais. Examine o help desta função, e use-a para plotar a resposta em freqüência do filtro do último exemplo. 20