Você está na página 1de 17

24-04-2013

[ESCREVA O TTULO DO DOCUMENTO]



Projectos MATLAB: Sinais Bsicos | Ivandro P. Mendona
UNICV-
DECM
SISTEMAS E SINAIS
LEE

Projecto MATLAB: Sinais Bsicos Pgina 1

Introduo

Os sinais bsicos mais usados no processamento digital de sinal so o impulso *n+, as
exponenciais da forma a
n
u[n], ondas seno, e a sua generalizao como exponenciais
complexas. Os s projectos seguintes concernem a gerao desses sinais.
Como todos os dados em Matlab esto representados por uma matriz MxN, os sinais sero
representados por vectores: ou seja, matrizes M x 1 para vectores coluna ou matrizes 1 x N
para vectores linhas. No MATLAB todos os sinais tm que ter durao finita contrariamente ao
que acontece na resoluo terica dos problemas.
Um segundo aspecto a salientar tem a ver com a indexao no MATLAB. Assume-se que o
vector indexado de 1 at N, o comprimento do vector. Todavia na anlise terica os ndices
normalmente resultam do processo de amostragem e correm de 0 a N-1, ou, no poucas
vezes, comeam num nmero arbitrrio negativo, -N. A informao sobre o domnio de
amostragem no pode ser associada ao prprio vector contendo os valores das amostras.
Desde logo ser preciso manter essa informao separadamente. Normalmente, isso no pe
problema nenhum at o momento de desenhar o grfico, em que se deve labelar o eixo
apropriadamente.
Um ltimo ponto importante a ter em conta diz respeito a notao de vectores usada no
MATLAB para a representao de sinais. Uma das grandes virtudes do ambiente MATLAB a
sua linguagem de alto nvel para a manipulao de vectores; ciclo for sero correntemente
utilizados. Quando se cria um sinal, como por exemplo, um seno, mais vivel, aplicar essa
funo ao argumento de um vector, consistindo nas N amostras no tempo.
Nos projectos seguintes, tratamos os sinais mais comummente encontrados no
processamento digital de sinais: impulsos, trens de impulsos, exponenciais e sinusides.










Projecto MATLAB: Sinais Bsicos Pgina 2

PROJECTO 1:
Este projecto concentra-se nas questes que envolvem a gerao de sinais bsicos no tempo
discreto usando o MATLAB. A maior parte do trabalho centra-se na utilizao de rotinas
internas do MATLAB para a gerao de sinais.

Sinais Bsicos Impulsos


O mais simples dos sinais o impulso unitrio (desviado):
Para criar um impulso no MATLAB, preciso decidir o intervalo de tempo de interesse para o
sinal. Se o impulso *n+ vai ser usado por um SLIT causal, o intervalo til vai de n = 0 a n = L 1.
Escolhendo L = 31, o cdigo MATLAB seguinte criar um impulso.










Fig .1-cdigo MATLAB que gera impulsos

Exerccio 1.1

Projecto MATLAB: Sinais Bsicos Pgina 3


a. Gerar e desenhar as sequncias seguintes. Para cada um dos casos o eixo horizontal (n) deve
estender-se apenas ao domnio indicado e o eixo deve ser referenciado em conformidade.
Cada uma das sequncias dever ser desenhada usado o comando stem.

X
1
*n+ = 0.9*n-5]
1 n 20


Fig.2- Impulso de Dirac no ponto n=5
X
2
*n+ = 0.8*n+
15 n 15


Fig.3- Impulso de Dirac no ponto n=0



Projecto MATLAB: Sinais Bsicos Pgina 4

X
3
*n+ = 1.5*n-333]
300 n 350



Fig.4- Impulso de Dirac no ponto n=333

X
4
*n+ = 4.5*n+7+
10 n 0



Fig.5-Impulso de Dirac no ponto n=-7
Nota: Todos os grficos acima representados foram feitas com o mesmo cdigo no
MATLAB
b. O impulso desviado, *n-n
0
], pode ser usado para construir um trem de impulsos
ponderados, de perodo P e um comprimento total MP:

Projecto MATLAB: Sinais Bsicos Pgina 5


x n
l 0
M 1
A
l
n lP

Se os pesos A
l
so iguais ento temos um trem de impulsos peridico com perodo P.
Gere e desenhe um trem peridico de impulsos com perodo P = 5 cujo comprimento 50.
Comece o sinal em n = 0. Tente fazer uma ou duas operaes de vectores em vez de usar um
ciclo for para produzir os impulsos. Quantos impulsos esto contidos nesse sinal de
comprimento finito?

Fig.6-Cdigo no MATLAB que gera e desenha Trem de impulsos

Fig . 7- Trem de impulsos gerado pelo cdigo anterior
Podemos facilmente concluir que temos na figura 2*50/5 impulsos.

Projecto MATLAB: Sinais Bsicos Pgina 6


Sinais Bsicos Sinusides
Outro sinal bsico a onda co-seno. No geral trs parmetros so necessrios para descrever
completamente uma sinuside real: A amplitude (A), a frequncia (e
0
) e a fase ().
x[n] = A cos(e
0
n + )
a. Gerar e desenhar as sequncias seguintes. Para isso usar as capacidades do MATLAB para
construir uma funo que calcula o co-seno ou o seno do argumento de um vector. Para cada
um dos casos o eixo horizontal (n) deve estender-se apenas sobre o domnio dado e deve ser
etiquetado em conformidade. Cada sequncia dever ser desenhada usando stem.
Todos o grficos das funes abaixo foram gerados no MATLAB pelo seguinte cdigo :

Fig.8- Funo no MATLAB que gera e desenha qualquer sinuside discreta





Exerccio 1.2

Projecto MATLAB: Sinais Bsicos Pgina 7

x
1
n sin
17
n 0 n 25

7iI

Fig.9- Grfico de X1 gerado pela funo anterior
x
2
n sin
17
n 15 n 15


Fig.10- Grfico de X2 gerado pela funo anterior


Projecto MATLAB: Sinais Bsicos Pgina 8



x
3
n sin 3 n
2
10 n 10


Fig.11- Grfico de X3 gerado pela funo anterior
x
4
n cos
23
n 0 n 50


Fig.12- Grfico de X4 gerado pela funo anterior

Projecto MATLAB: Sinais Bsicos Pgina 9



Deduzir uma frmula mias simples para x3[n] usando funes trigonomtricas. Explique
porque que x
4
[n] no uma sequncia peridica.

Resposta: Deduo da frmula mais simples para
| |
3
n
x
:
| | | |
( )
{ } { }
3 3
3 3
sin(3 ) cos(3 ) Re 1* Re
2
j n j n
n n n n
x x e e
t t t
t t = + = = = ,ou atravs da
formula de Euler que diz o seguinte: cos( ) sin( )
j
j
e
u
u u = + , donde
( )
( )
2
j
j
Cos
e
e
u
u
u

+
= e
( )
( )
2
j
j
Sen
j
e
e
u
u
u

= . Ento, vem que:


| | | |
) (
3 3
3 3
3 3
1
sin(3 ) cos(3 )
2 2
2 2
j n j n
j n j n
n n n n
x x e e
e e
t t
t t
t
t t

= + = = +
= +

Resposta: A sequncia
| |
4
n
x
no peridica porque a fraco
0
2t
O
um nmero irracional.
Demonstrao:
( ) | |
0 0
0 4
1 1
_
2
23 23 2 23
irracional n Nao periodico
x
t
t t
= = =
O O
O


b. Escrever uma funo MATLAB que gera uma sinuside de comprimento finito. A funo
pedir um total de cinco argumentos de entrada: trs parmetros da onda e dois para
especificarmos o primeiro e ultimo ndice n do sinal de comprimento finito. A funo dever
retornar um vector coluna que contm os valores da sinuside. Testar a funo desenhando o
seu grfico para vrios valores dos parmetros de entrada. Em particular, mostra como gerar o
sinal 2*sin(n/11) para -21 < n < 21

Podemos modificar o cdigo anterior para cumprir os requisitos aqui pedido retirando (;) nas
linha 10, 13 e 17 . o grfico seguinte dado pelo cdigo referido acima :

Projecto MATLAB: Sinais Bsicos Pgina 10


Fig.13- Grfico de X1 gerado pela funo anterior para desenhar um sinuside de
comprimento finito
c. Modificar a funo da alnea anterior para retornar dois argumentos: um vector de ndices
do domnio de n, e os respectivos valores do sinal.

Projecto MATLAB: Sinais Bsicos Pgina 11


Fig.14- Script gerado no MATLAB para o sinal anterior

Sinusides amostradas
Muitas vezes um sinal discreto no tempo produzido por amostragem de um sinal contnuo,
como por exemplo, uma onda seno de frequncia constante. A relao entre o sinal no tempo
contnuo e as suas amostras estabelecida pelo teorema de amostragem de Nyquist
Shannon, que diz que a frequncia de amostragem deve ser no mnimo duas vezes a maior
frequncia do sinal, para que a reconstruo seja possvel.
Em geral a sinuside contnua tem a seguinte frmula matemtica:
s(t) = A cos(2f
0
t+ ) (1.4)
Onde A a amplitude, f
0
a frequncia em Hz e a fase inicial. Se um sinal discreto no
tempo produzido por amostragem regular de s(t) com uma taxa f
s
= 1/T
s
, tem-se:

s[n] =s(t)|
t=n
= A cos(2f
0
t+ ) = A cos(2(f
0
/ f
o
)t+ ) (1.5)

Exerccio 1.3

Projecto MATLAB: Sinais Bsicos Pgina 12

Comparando com a frmula (1.3) para uma sinuside discreta, x[n] = A cos(e
0
n + ), v-se
que a frequncia angular normalizada agora uma verso escalada de fo, ou seja e
0
= 2f
0
T.
a. A partir da frmula (1.4) de uma sinuside contnua, escrever uma funo que gere
amostras de um sinal discreto finito no tempo. Essa funo deve requerer seis entradas: trs
para os parmetros do sinal, duas para os valores inicial e final do tempo, e uma param a taxa
de amostragem (em Hz). Esta funo pode chamar a funo previamente escrita para uma
sinuside discreta. Para fazer a funo correspondente no tempo contnuo, a unidade do
tempo deve ser o segundo. Usar a funo para gerar uma sinuside amostrada com as
seguintes definies:

freq Sinal = 1200 Hz frq. amostragem = 8 Khz
Fase Inicial = 45 deg Incio do tempo = 0 seg.
Amplitude = 50 Fim do tempo = 7 miliseg.

Fazer dois grficos do sinal resultante: uma em funo do tempo t (em ms), e o outro em
funo dos ndices das amostras n. (t
n
= nT)
Determinar o comprimento do sinal discreto resultante e o nmero de perodos da sinuside
representada pelo vector.
b. Mostrar por manipulao matemtica que um co-seno amostrado nos tempos t
n
= ()T se
assemelha a a um seno onde f
0
= 1/T. Usar a funo obtida em (a) para gerar um seno discreto,
mudando os tempos iniciais e final de amostragem.


Sinais Bsicos Exponenciais
A exponencial decrescente um importante sinal bsico em DSP pois soluo de equaes
de diferenas de coeficientes constantes.
a. Estudar o cdigo listado a seguir de uma funo MATLAB e perceber como que ela gera
uma exponencial discreta no tempo. A partir do exemplo construir uma funo para desenhar
a exponencial x[n] = (0.9)
n
no domnio n = 0,1,2, ... , 20.
Exerccio 1.4

Projecto MATLAB: Sinais Bsicos Pgina 13

Fig.15-cdigo e grfico gerado pela mesma para uma exponencial

b. Note que
n 0
l 1
a
n
1 a
l
1 a
para
a 1

Usando a funo da alnea (a) gerar uma exponencial e a sua soma no seu intervalo de
definio, comparar com o resultado da frmula acima.

Projecto MATLAB: Sinais Bsicos Pgina 14



Fig.16- cdigo MATLAB da alnea a) modificado para fazer a soma de uma exponencial
Para cumprir os requisito pedidos na alnea b) basta acrescentar na 11linha do cdigo da
alnea a) s=sum(y) que o responsvel pelo calculo da sama do exponencial y[n].
Em cima esto o script gerado pelo cdigo no MATLAB:
Podemos ver que a soma do sinal anterior s=8.7842 que compatvel com a da frmula
dado.
c. Uma razo para a ocorrncia frequente da sequncia exponencial em DSP tem a ver com a
propriedade do desvio. Mostre que uma exponencial de comprimento finito no tempo satisfaz
a relao do desvio: y[n] = ay[n - 1] no intervalo
1 n L 1
, comparando y(2:1) e a*y(1:
L 1). Quando se desvia sinais finitos no MATLAB preciso ter cuidado com o ltimo ponto,
pois o acrescentamento de zeros no automtico.

Projecto MATLAB: Sinais Bsicos Pgina 15

Se:
| | | |
| | | |
1 1
1
1 *
* 1 ( * )
n n n
n
y n a y n a a a
a y n a a a y n

= = =
= =

Podemos facilmente concluir que:
| | | | * ( * )
l l l n
a y n l a a a y n

= =
d. Uma outra forma de gerar um sinal exponencial usando a frmula recursiva dada pela
equao de diferenas. O sinal y[n]=a
n
u[n] soluo da seguinte equao de diferenas,
quando x[n] um impulso:
y[n] - ay[n - 1] = x[n] condio inicial: y[-1] = 0
No MATLAB a funo filter gerar o mesmo sinal da alnea (a), (i.e., a = 0.9)
Se
;
Seja: ;
O que implica dizer:
Atribuindo valores a n tem-se:
Para ,
Para ,
Para ,
Para ,,
,para: ,isto ,



Concluso





Projecto MATLAB: Sinais Bsicos Pgina 16

Você também pode gostar