You are on page 1of 16

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

Aula 2

Sinais de tempo discreto


Operaes com sequncias

Bibliografia
OPPENHEIM, A.V.; WILLSKY, A. S. Sinais e Sistemas, 2a edio, Pearson, 2010. ISBN 9788576055044.
Pginas 5-20.
HAYKIN, S. S.; VAN VEEN, B. Sinais e sistemas, Bookman, 2001. ISBN 8573077417. Pginas 40-46 e
71-76.

1.4

Sinais de tempo discreto


Um sinal de tempo discreto est definido apenas em instantes isolados de
tempo. Consequentemente, um sinal de tempo discreto pode ser descrito por
uma sequncia de nmeros.
Nesta aula, aprenderemos um pouco mais sobre a representao deste tipo de
sinal e como realizar operaes com eles.
Os sinais de tempo discreto so representados pela notao x[n] em que n s
est definido para nmeros inteiros. Cada um dos elementos do sinal x
chamado de amostra. Vejamos alguns exemplos:

2
(a) x[ n] = n , 6 n 6

Este

sinal

constitudo

das

seguintes

amostras

x n = {36, 25,16, 9, 4,1, 0,1, 4, 9,16, 25, 36} . A figura a seguir mostra um grfico des-

te sinal:
stem(-6:6, (-6:6).^2);

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

A segunda amostra deste sinal x[5] = 25 . Este sinal tem 6 (6) + 1 = 13 amostras.
(b) y[n ] = (0, 9)n , n
As amostras deste sinal so y[n ] = {1; 0, 9; 0, 81; 0, 729; 0, 6561;...} . A figura a seguir
mostra as 50 primeiras amostras deste sinal.
Repare que este um sinal com infinitas amostras e, por exemplo, y[0] = 1 .
stem (0:50, (0.9).^(0:50))

Os exemplos acima mostram que um sinal de tempo discreto pode ser uma
sequncia de comprimento finito ou infinito. Alm disso, um sinal de comprimento finito definido no intervalo N1 n N 2 tem comprimento ou durao:

N = N 2N1 + 1 .
Dentre as sequncias de comprimento infinito, destacamos as sequncias
chamadas causais definidas somente para n 0 e as sequncias anticausais definidas para n < 0 . Por exemplo, a sequncia do exemplo anterior causal.

Exerccio
1. (CARLSON, 1998; p. 44) Um sinal chamado de simplesmente definido
(simply-defined) se ele representado por uma nica equao e chamado
2

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

de definido por partes (piecewise defined) se representado por um conjunto de equaes cada uma vlida num intervalo de tempo diferente. Sendo
assim, esboce os sinais de tempo discreto definidos pelas seguintes equaes.
Indique tambm se eles so definidos por partes.

(a) x[n] = e 0, 25n , n

n 1, n < 3

x[n ] = 3, 3 n < 6
(b)
n
5 , n 6
3

(n + 1)
(c) x[n] = 2 ,

n 2 1, n 0
(d) x[n] =
0, n < 0

n +1

1 (1 + n ), n 0
1 (1 n ) , n < 0

(e) x[n] =

1.5

Operaes com sequncias

Sistemas de tempo discreto so entidades que transformam uma ou mais sequncias de entrada em uma ou mais sequncias de sada. A figura a seguir
mostra esquematicamente um sistema de tempo discreto cuja entrada a sequncia x[n] e a sada a sequncia y[n] .

O conceito de sistemas um dos mais importantes nos cursos de Engenharia e


explorado em vrias disciplinas. Aqui, nos preocuparemos principalmente
com a parte operacional de sistemas de tempo discreto, ou, em outras palavras,
em como eles operam.

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

Quase todo sistema de tempo discreto pode ser decomposto em um conjunto


de operaes bsicas entre sequncias que sero estudadas a seguir.

1.5.1 Produto
A operao produto entre duas sequncias x[n] e y[n] , representada por
w1 [n] = x[n] y[n] , consiste em multiplicar, para cada valor de n as amostras das

sequncias x[n] e y[n] .


Esquematicamente, esta operao representada pelo smbolo mostrado a seguir. Esta operao tambm chamada de modulao na rea de telecomunicaes.

1.5.2 Soma
A operao soma entre duas sequncias x[n] e y[n] , representada por
w2 [n] = x[n] + y[n] , consiste em somar, para cada valor de n as amostras das se-

quncias x[n] e y[n] .


Esquematicamente, esta operao representada pelo smbolo mostrado a seguir que chamado de somador.

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

1.5.3 Multiplicao por escalar


Nesta operao, um novo sinal gerado multiplicando-se cada amostra da
sequncia x[n] pelo escalar A : w3 [n] = Ax[n] .
Esquematicamente temos:

Esta operao tambm chamada de ganho.


Exerccio
2. (MITRA, 2001; p. 106) Considere as seguintes sequncias de comprimento 7
definidas para 3 n 3 :
x[n] = {3; 2; 0; 1; 4; 5; 2}
y[n] = {0; 7; 1; 3; 4; 9; 2} .
w[n] = { 5; 4; 3; 6; 5; 0; 1}

Determine as seguintes sequncias:


(a) u[n] = x[n] + y[n]

(b) v[n] = x[n] + w[n]

(c) s[n] = y[n] w[n]

(d) r [n] = 4,5 y[n] .

1.5.4 Deslocamento no tempo


A ltima operao de que trataremos por enquanto o deslocamento no tempo (time-shifting). A relao entre a sada e a entrada nesta operao
w4 [n] = x[n N ]

em que N um inteiro. Se N > 0 esta uma operao de atraso e se N < 0 esta


uma operao de avano. O dispositivo que implementa a operao de atraso
de uma amostra chamado de atraso unitrio e seu smbolo mostrado a seguir.

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

A explicao do por que deste smbolo ser dada mais tarde quando for estudado Transformadas z.

Exerccios
3. Um sinal de tempo discreto x[n] , definido para todo n inteiro dado por
x[n] = 2n + 1 . Ele passado por um atrasador, obtendo-se o sinal w[n] = x[n 1] .

Descreva as amostras para 0 n 10 dos sinais x[n] e w[n] e escreva uma frmula fechada para as amostras do sinal w[n] .

4. Desenhe um diagrama de blocos que programe a seguinte operao sobre o


sinal x[n] :
y[n] = x[n] + 0,5 x[n 1] + 0,75 x[n 2]

5. (MITRA, 2001; p. 47) Descreva uma formula para o sinal y[n] obtido do filtro mostrado em diagrama de blocos na figura a seguir:

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

L1 L1.1

Introduo Gerao de Sinais no Matlab

Introduo
Em Processamento Digital de Sinais (PDS) ser estudado uma srie de tcnicas como

amostragem, transformadas discretas (TFTD, TFD, Transformada Z) e algoritmos que implementam essas transformadas (FFT).
Estas tcnicas de PDS esto presentes hoje em dia no desenvolvimento de qualquer
aplicao que envolva transmisso ou processamento digital de dados e, portanto seu conhecimento crucial a um Engenheiro.
As figuras a seguir ilustram aplicaes dessas tcnicas em recepo de udio digital.

Digital Audio Broadcast

O Matlab uma ferramenta muito til no estudo de problemas e no desenvolvimento


de projetos em Engenharia sendo utilizado em universidades e empresas ao redor do mundo.
O principal motivo deste sucesso a utilizao macia de vetores e matrizes para representar dados de uma forma simples (Matlab = Matrix Laboratory). Esta forma de representao praticamente elimina a necessidade de utilizao de laos FOR ou WHILE simplificando e acelerando muito os programas.
O objetivo desta atividade rever alguns conceitos bsicos de programao em Matlab. Durante o curso veremos muitos outros detalhes tcnicos.

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

Lembre-se: sempre que voc ficar na dvida sobre a utilizao de um comando, a funo <help comando> pode lhe ajudar.

L1.2

Gerando vetores

L1.2.1 O operador :
O operador : utilizado para gerar e acessar elementos de um vetor.

Vetor = valor inicial: passo: valor final


Quando o passo unitrio, ele pode ser omitido.
Exemplos de utilizao
A. gerar um vetor x com os nmeros inteiros de zero a cinco

>> x = 0:5
x =
0

b. gerar um vetor y indo de 0 a 1 com passo de 0.1.

>> y = 0:0.1:1
y =
0

0.1000

0.6000 0.7000

0.8000

0.2000

0.3000

0.9000

0.4000

0.5000

1.0000

c. mostrar o segundo elemento do vetor x

>> x(2)
ans =
1

Exerccio
1. Gerar um vetor x de nmeros pares de 0 a 50.
Comandos:

L1.2.2 A funo linspace


A funo linspace uma forma prtica de se gerar vetores quando sabemos quantos pontos ele deve ter.

Vetor = linspace (valor inicial, valor final, no. de pontos)


8

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

Exemplos de utilizao
A. Gere um vetor de 1000 pontos com valores entre zero e 1 igualmente espaados.

>> v = linspace(0,1,1000);
b. Repita o exerccio anterior, mas com os valores em ordem decrescente.

>> v = linspace(1,0,1000);

Repare que quando usamos ; ao final do comando o resultado no apresentado na tela.


Porm, a operao de atribuio executada da mesma forma.

Exerccio
2. Gere um vetor x de 5000 pontos com valores entre 0 e 2*pi.
Comandos:

L1.2.3 Vetores especiais


Existem vetores pr-definidos pelo Matlab e que so muito teis. Dois deles so o

ones(num.linhas, num.colunas) e o zeros(num.linhas, num.colunas)


que geram, como os nomes dizem, vetores constitudos de uns e de zeros respectivamente.
Exemplos de aplicao
A. Gere um vetor constitudo de 10 zeros.

>> x = zeros(1,10)
x =
0

b. Gere um vetor constitudo por 5000 uns.

>> y = ones(1,5000);

Exerccio
3. Gere uma matriz 2x2 constituda por zeros.
Comandos:

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

L1.2.4 Concatenao de vetores


Uma ferramenta muito interessante do Matlab a possibilidade de combinar vetores
para formar outros (concatenar vetores). Veja os seguintes exemplos.
Exemplos de aplicao:
A. Gere um vetor de cinco zeros seguidos por cinco uns.

>> vector = [zeros(1,5) ones(1,5)]


vector =
0

B. Gere um vetor contendo os nmeros inteiros entre zero e 10 em ordem crescente seguidos
pelos mesmos em ordem decrescente.

>> x = [0:10 10:-1:0]


x =
0

10

3
7

4
6

5
5

6
4

7
3

8
2

9
1

10
0

Exerccio
4. Construa um vetor constitudo pelos nmeros pares de 0 a 10 seguido pelos nmeros mpares de 0 a 10.
Comandos:

L1.2.5 Operaes entre vetores


O Matlab permite somar (+), subtrair (-), multiplicar (.*) , dividir (./) vetores. Essas
operaes so realizadas elemento a elemento e s podem ser aplicadas entre vetores de mesmo comprimento.
Alm disso, quase todas as suas funes (trigonomtricas, exponenciais e outras) podem ser aplicadas a um vetor sendo que elas operam tambm elemento a elemento.
Exemplos de aplicao
a. Sendo x = [2 3 7] e y = [0 -1 3] escreva a resposta de cada um desses comandos executados no Matlab.
I) x + y [2 2 10]
ii) x y [2 4 4]
iii) x.*y [0 -3 21]
10

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

b. Como gerar a partir do vetor x = 0:0.001:1 um vetor com nmeros de 1 a 11?

V = 10*x+1
Exerccio
5. Sendo x = [2.1 -2 3] e y = [0 -1 3], escreva o vetor resultante das seguintes
operaes:
ii) 3*x

i) x+y

iv) x./y

iii) x.*y

v) y.^2

vi) x.^y

Respostas:

L1.3

Grficos
Outra caracterstica muito interessante do Matlab para um engenheiro a facilidade

de se construir grficos complicados com ele de uma maneira muito simples. Dois comandos
muito utilizados so:

plot(vetor.abscissa, vetor.ordenada, modo);


stem(vetor.abscissa, vetor.ordenada);
O comando plot traa um grfico colocando seu primeiro argumento no eixo horizontal e seu segundo argumento no eixo vertical. A string modo indica a forma como o
grfico ser traado. Veja help plot para mais detalhes.

Stem traa um grfico da sequncia em seu segundo argumento como palitos com
crculos no valor dos dados usando seu primeiro argumento como abscissa. Veja os exemplos.
Exemplos de aplicao
a. Faa um grfico da funo y ( t ) = sin(t ) para t 0, 4

>> t = linspace(0,4*pi,5000);
>> y = sin(t);
>> plot(t,y)

11

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

b. Faa um grfico da funo y n = n 2 para 5 n 5 .

>> n = -5:5;
>> y = n.^2;
>> stem(n,y)

Alguns comandos interessantes:


I) grid coloca linhas de grade no grfico
ii) title permite acrescentar um ttulo ao grfico
iii) xlabel - permite acrescentar um ttulo no eixo das abscissas
iv) ylabel - permite acrescentar um ttulo no eixo das ordenadas
v) hold on no apaga o grfico atual antes de fazer o seguinte

Exerccios

6. Faa um grfico de y [ n ] = sin

n
12

e z [ n ] = cos

n
12

para 30 n 30 na

mesma figura. O grfico de y [ n ] dever ficar em azul e o de z [ n ] em vermelho.


Comandos:

12

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

L1.4

Scripts

At este ponto, todas as nossas interaes com o Matlab tm sido atravs da linha de
comando. Entramos comandos ou funes na linha de comando e o Matlab interpreta
nossa entrada e toma a ao apropriada. Este o modo de operao preferencial quando
nossa sesso de trabalho curta e no repetitiva.
No entanto, o real poder do Matlab para anlise e projeto de sistemas vm da sua habilidade de executar uma longa sequncia de comandos armazenados num arquivo. Estes arquivos so chamados de arquivos-M porque seus nomes tm a forma nomearq.m.
Um script um tipo de arquivo-M. Scripts so arquivos-textos comuns e podem ser criados usando um editor de texto.
Um script uma sequncia de comandos e funes comuns usados na linha de comando.
Um script invocado na linha de comando digitando-se o nome do arquivo. Scripts podem invocar outros scripts. Quando um script invocado, o Matlab executa os comandos
e funes no arquivo como se eles tivessem sido digitados diretamente na linha de comando.
O script opera sobre as variveis do espao de trabalho.
Suponha por exemplo que desejemos fazer um grfico da funo y (t ) = sin t em que
uma varivel que queremos variar.
Usando o editor de texto do Matlab (basta ditar edit na linha de comando), podemos
escrever um script chamado plotdata.m como mostrado a seguir.
% Este e um script para fazer um grafico da funcao y = sin(alfa*t)
% O valor de alfa precisa existir no espaco de trabalho antes
% de se chamar este script
t = 0:0.01:1;
y = sin(alfa*t);
plot(t,y);
xlabel ('tempo(s)');
ylabel('y(t) = sin(\alpha t)');
grid on;

importante salvar o scritpt no mesmo diretrio em que se est trabalhando na linha de


comando. Caso contrrio, ao tentar executar o script, o Matlab no encontrar o arquivo
e exibir uma mensagem de erro. Este erro muito comum quando estamos comeando a
trabalhar com scripts.
Uma vez digitado e salvo muito fcil utilizar o script. Veja os exemplos a seguir:

>> alfa = 50;


>> plotdata
13

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

>> alfa = 10;


>> plotdata

Ao escrever scripts sempre interessante utilizar comentrios, linhas que comeam com
%. Se voc escrever linhas de comentrio antes do comeo das instrues do script, ao utilizar o comando help nomearq o Matlab apresenta estas linhas na tela. Por exemplo,
>> help plotdata
Este e um script para fazer um grafico da funcao y = sin(alfa*t)
O valor de alfa precisa existir no espaco de trabalho antes
de se chamar este script

L1.5

Funes

Assim como os scripts, as funes definidas pelo usurio esto entre os recursos mais importantes e utilizados do Matlab. Uma funo um script que recebe um ou mais parmetros do teclado e pode devolver um ou mais parmetros ou executar uma tarefa.
O formato de uma funo no Matlab o seguinte

function [outarg1, outarg2,...] = fname(inarg1, inarg2,...)


% Um comentrio
% Mais um comentrio
....
(cdigo executvel)
....

14

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

fname o nome da funo criada e deve ser o nome do arquivo m em que foram gravadas as instrues. inarg1, inarg2,... so os argumentos de entrada e ou-

targ1, outarg2,... so os argumentos de sada.


A seguir damos um exemplo bastante simples de funo. A funo somateste recebe
dois argumentos a, b e retorna a soma deles.

function res = somateste(a,b);


%Funcao para somar dois numeros a e b
res = a+b;
Uma vez que voc tenha salvado este arquivo como somateste no diretrio corrente,
voc pode us-lo como nos exemplos a seguir:

>> somateste(2, 4)
ans =
6
>> a = 5;
>> b = -3;
>> res = somateste(a,b)
res =
2

Exerccios
7. (a) Digite o script plotdata da Seo L1.4 e gere os grficos dos exemplos daquela
seo.
(b) Reescreva o script plotdata visto acima de forma que ele seja uma funo que recebe a varivel alfa. Ou seja, escreva uma funo que faa um grfico da funo

y (t ) = sin t no intervalo 0 t 1 e um parmetro escolhido pelo usurio. Por


exemplo, o comando:

>> plotdada(50)
deve gerar o grfico

Resposta (listagem):

15

EN2610 Processamento Digital de Sinais Aula 2 Professor Marcio Eisencraft janeiro 2012

8. Gere um vetor de 100 valores aleatrios com distribuio uniforme no intervalo [0,1] .
Dica: use a funo rand (no sabe como usar? Para que serve o help?).
Comandos:

9. Escreva uma sequncia de comandos do Matlab que fornea um vetor contendo 100 valores aleatrios uniformemente distribudos no intervalo -1 a 1 e que faa um grfico deste
sinal.
Comandos:

10. Escreva uma sequncia de comandos Matlab que gere um grfico do sinal

x[n ] = cos n + 0,2r [n ] onde r [n] um vetor de nmeros aleatrios com distribuio
8
uniforme entre -1 e 1. Faa 0 n 99 . (Dica: use o comando rand).
Comandos:

11. Escreva uma funo Matlab chamada pulso2graf cujas entradas sejam dois nmeros
inteiros a e b com a < b . A funo dever fazer o grfico de um pulso com amplitude 2
no intervalo a n b . O grfico deve comear em a 2 e terminar em b + 2 .
Por exemplo, ao digitarmos:

>> pulso2graf(2,8);
devemos obter a figura

Comandos:
16

You might also like