analise de sinais apostila

6
Laborat´ orio de Sistemas e Sinais An´ alise Espectral Lu´ ıs Caldas de Oliveira Abril 2009 O objectivo deste trabalho de laborat´ orio ´ e o de ensinar a analisar sinais no dom´ ınio da frequˆ encia. Utilizaremos dois m´ etodos. O primeiro consiste em representar graficamente os coeficientes da s´ erie discreta de Fourier de sinais de durac ¸˜ ao finita. O segundo m´ etodo representa os coeficientes de segmentos de durac ¸˜ ao limitada de sinais que variam no tempo, criando o que ´ e chamado de espectrograma. 1 Introduc ¸˜ ao Um sinal em tempo discreto de durac ¸˜ ao finita com p amostras pode ter a seguinte expans˜ ao em s´ erie de Fourier: x(n) = A 0 + p-1 2 k=1 A k cos(kω 0 n + φ k ) (1) se p for um n ´ umero ´ ımpar e x(n) = A 0 + p 2 k=1 A k cos(kω 0 n + φ k ) (2) se p for par. Um sinal de durac ¸˜ ao finita pode ser considerado como um ciclo de um sinal peri´ odico com frequˆ encia funda- mental ω 0 = 2π/ p em radianos por amostra, ou f = 1/ p em Hertz. Neste laborat´ orio assumiremos que p ´ e sempre par e faremos a representac ¸˜ ao gr´ afica de cada uma das componentes em frequˆ encia | A 0 |,..., | A p/2 | para diversos sinais com o objectivo de compreender o significado desses coeficientes. De notar que cada | A k | a a amplitude da componente sinusoidal do sinal ` a frequˆ encia kω 0 = k2π/ p, que tem como unidades radianos por amostra. Para interpretar estes coeficientes poder´ a ser conveniente converter esta unidade para Hertz. Se a frequˆ encia de amostragem for f s amostras por segundo, ent˜ ao a convers˜ ao poder´ a ser feita atrav´ es de: (k2π/ p)[radianos/amostra] f s [amostras/segundo] 2π[radianos/ciclo] = kf s p [ciclos/segundo] Assim, cada | A k | a a amplitude da componente sinusoidal com frequˆ encia kf s / p Hz. Note que o Matlab n˜ ao tem nenhuma func ¸˜ ao pr´ e-definida para calcular os coeficientes da s´ erie de Fourier, tendo no entanto uma func ¸˜ ao que calcula a transformada r´ apida de Fourier, chamada fft. Esta func ¸˜ ao pode ser usada para calcular os coeficientes da s´ erie de Fourier atrav´ es da seguinte func ¸˜ ao serieFourier: function [amplitude, fase] = serieFourier(x) % SERIEFOURIER - Retorna a amplitude e a fase de cada componente % sinusoidal da expans˜ ao em s´ erie de Fourier do sinal dado como % argumento, que ´ e interpretado como um ciclo de um sinal % peri´ odico. Assume-se que o argumento tem um n´ umero de amostras p que e par. O primeiro valor de retorno ´ e um vector contendo as % amplitudes da componentes sinusoidais na expans˜ ao em s´ erie de % Fourier com frequˆ encias 0, 1/p, 2/p, ... 1/2. O segundo valor de % retorno ´ e um vector com as fases das componentes sinusoidais. Ambos % os vectores tˆ em comprimento de (p/2)+1. 1

Upload: sandro-sena

Post on 23-Jun-2015

41 views

Category:

Engineering


3 download

DESCRIPTION

apostila de analise de sinais

TRANSCRIPT

Page 1: Analise de sinais apostila

Laboratorio de Sistemas e Sinais

Analise Espectral

Luıs Caldas de Oliveira

Abril 2009

O objectivo deste trabalho de laboratorio e o de ensinar a analisar sinais no domınio da frequencia. Utilizaremos

dois metodos. O primeiro consiste em representar graficamente os coeficientes da serie discreta de Fourier de sinais

de duracao finita. O segundo metodo representa os coeficientes de segmentos de duracao limitada de sinais que

variam no tempo, criando o que e chamado de espectrograma.

1 Introducao

Um sinal em tempo discreto de duracao finita com p amostras pode ter a seguinte expansao em serie de Fourier:

x(n) = A0 +

p−1

2∑

k=1

Ak cos(kω0n + φk) (1)

se p for um numero ımpar e

x(n) = A0 +

p

2∑

k=1

Ak cos(kω0n + φk) (2)

se p for par.

Um sinal de duracao finita pode ser considerado como um ciclo de um sinal periodico com frequencia funda-

mental ω0 = 2π/p em radianos por amostra, ou f = 1/p em Hertz. Neste laboratorio assumiremos que p e sempre

par e faremos a representacao grafica de cada uma das componentes em frequencia |A0|, . . . , |Ap/2| para diversos

sinais com o objectivo de compreender o significado desses coeficientes.

De notar que cada |Ak | da a amplitude da componente sinusoidal do sinal a frequencia kω0 = k2π/p, que

tem como unidades radianos por amostra. Para interpretar estes coeficientes podera ser conveniente converter esta

unidade para Hertz. Se a frequencia de amostragem for fs amostras por segundo, entao a conversao podera ser

feita atraves de:(k2π/p)[radianos/amostra] fs[amostras/segundo]

2π[radianos/ciclo]=

k fs

p[ciclos/segundo]

Assim, cada |Ak | da a amplitude da componente sinusoidal com frequencia k fs/p Hz.

Note que o Matlab nao tem nenhuma funcao pre-definida para calcular os coeficientes da serie de Fourier,

tendo no entanto uma funcao que calcula a transformada rapida de Fourier, chamada fft. Esta funcao pode ser

usada para calcular os coeficientes da serie de Fourier atraves da seguinte funcao serieFourier:

function [amplitude, fase] = serieFourier(x)

% SERIEFOURIER - Retorna a amplitude e a fase de cada componente

% sinusoidal da expansao em serie de Fourier do sinal dado como

% argumento, que e interpretado como um ciclo de um sinal

% periodico. Assume-se que o argumento tem um numero de amostras p que

% e par. O primeiro valor de retorno e um vector contendo as

% amplitudes da componentes sinusoidais na expansao em serie de

% Fourier com frequencias 0, 1/p, 2/p, ... 1/2. O segundo valor de

% retorno e um vector com as fases das componentes sinusoidais. Ambos

% os vectores tem comprimento de (p/2)+1.

1

Page 2: Analise de sinais apostila

p = length(x);

f = fft(x)/p;

amplitude(1) = abs(f(1));

upper = p/2;

amplitude(2:upper) = 2*abs(f(2:upper));

amplitude(upper+1) = abs(f(upper+1));

fase(1) = angle(f(1));

fase(2:upper) = angle(f(2:upper));

fase(upper+1) = angle(f(upper+1));

Se se tiver um vector x com comprimento par, pode-se usar a funcao para obter os coeficientes da DFS:

[A, phi] = serieFourier(x);

Os vectores A e phi contem a amplitude e a fase de cada coeficiente.

Para representar graficamente as amplitudes dos coeficientes em funcao da frequencia basta fazer:

p = length(x);

frequencias = [0:fs/p:fs/2];

plot(frequencias, A);

xlabel(’frequencia em Hertz’);

ylabel(’amplitude’);

Em que fs tera o valor da frequencia de amostragem em amostras por segundo. A linha

frequencias = [0:fs/p:fs/2];

requer uma analise mais cuidada. Produz um vector com o mesmo comprimento de A, ou seja 1 + p/2, em

que p e o comprimento do vector x. Os elementos do vector frequencias sao as frequencias em Hertz de cada

componente da serie de Fourier.

2 Trabalho para os Alunos

1. Considere o sinal produzido da seguinte forma:

t = [0:1/8000:1-1/8000];

x = sin(2*pi*800*t);

Isto corresponde a 8000 amostras de uma sinusoide de 800 Hz amostrada a 8 kHz. Oica o vector x. Utilize

a funcao serieFourier descrita anteriormente para representar graficamente a amplitude dos coeficientes

da serie de Fourier de x.

2. O sinal da alınea anterior pode ser visto como a amostragem da sinusoide contınua:

x(t) = sin(2π800t)

Repare que a frequencia angular da sinusoide e a derivada em ordem ao tempo do argumento da funcao seno:

ω =d

dt2π800t = 2π800

Considere agora o sinal

y(t) = sin(2π800t2)

A este sinal da-se o nome de chirp. A frequencia instantanea pode ser obtida pela derivada do argumento

da funcao seno:

ω(t) =d

dt2π800t2 = 4π800t

Num sinal chirp a frequencia varia constantemente com o tempo.

Considere a amostragem a 8 kHz de y(t):

2

Page 3: Analise de sinais apostila

t = [0:1/8000:1-1/8000];

y = sin(2*pi*800*(t.*t));

Oica o sinal e represente graficamente os coeficientes da serie de Fourier. Que gama de valores toma a

frequencia instantanea?

3. Os coeficientes de Fourier que calculou anteriormente, descrevem a gama de frequencias do chirp bem, nas

nao a sua dinamica. Represente graficamente os coeficientes da serie de Fourier do sinal z dado por:

z = y(8000:-1:1)

Oica o sinal. Compare o som de z com o de y e compare os graficos dos coeficientes de Fourier.

4. O sinal chirp tem uma representacao em frequencia que varia com o tempo. Mais precisamente, existem

certas propriedades do sinal que mudam suficientemente devagar para o nosso ouvido as entender como uma

variacao na composicao em frequencia do sinal em vez de o considerar como pertencente ao proprio sinal

(como o timbre ou conteudo tonal). Note que o nosso ouvido nao e sensıvel a frequencias abaixo dos 30

Hz. Em vez disso, o nosso cerebro entende essas variacoes como variacoes na natureza do som e nao como

conteudo no domınio da frequencia. Os metodos de analise de Fourier usados anteriormente nao reflectem

esse fenomeno psico-acustico.

A serie de Fourier localizada procura resolver este problema. O sinal chirp tem 8000 amostras num se-

gundo, mas como nao ouvimos variacoes abaixo dos 30 Hz como conteudo na frequencia, pode fazer sentido

re-analisar o sinal ao ritmo de 30 vezes por segundo. Isto pode ser feito com a seguinte funcao:

function espectrogramaCascata(s, fs, amostrasespectro, numdeespectros)

% ESPECTROGRAMACASCATA - Faz o grafico 3-D do espectrograma do sinal

% s.

%

% Argumentos:

% s - o sinal.

% fs - frequencia de amostragem em amostras por segundo.

% amostrasespectro - o numero de amostras usadas para calcular cada

% espectro.

% numdeespectros - numero de espectros a calcular.

frequencias = [0:fs/amostrasespectro:fs/2];

offset = floor((length(s)-amostrasespectro)/numdeespectros);

for i=0:(numdeespectros-1)

start = i*offset;

[A, phi] = serieFourier(s((1+start):(start+amostrasespectro)));

amplitude(:,(i+1)) = A’;

end

waterfall(frequencias, 0:(numdeespectros-1), amplitude’);

xlabel(’frequencia’);

ylabel(’tempo’);

zlabel(’amplitude’);

Esta funcao pode ser chamada do seguinte modo:

t = [0:1/8000:1-1/8000];

y = sin(2*pi*800*(t.*t));

espectrogramaCascata(y, 8000, 400, 30);

Que produz o grafico da figura 4. O grafico mostra 30 conjuntos distintos de coeficientes de Fourier, cada

um calculado com 400 das 8000 amostras disponıveis. Explique como e que este grafico descreve o que

ouviu. Crie um grafico semelhante para o chirp invertido z.

3

Page 4: Analise de sinais apostila

0

1000

2000

3000

4000

0

10

20

300

0.1

0.2

0.3

0.4

0.5

0.6

frequenciatempo

am

plit

ude

Figura 1: Representacao da serie de Fourier localizada de um sinal chirp

5. A figura 4 e facil de interpretar gracas a estrutura relativamente simples do sinal chirp. Sinais mais inte-

ressantes sao mais difıceis de analisar desta forma. Uma forma de visualizacao alternativa do conteudo em

frequencia e o espectrograma. Um espectrograma e um grafico como o da figura 4, mas visto de cima. A

altura de cada ponto e representada por uma cor diferente (ou intensidade numa imagem a preto-e-branco).

No Matlab existe uma funcao pre-definida para gerar um espectrograma:

specgram(y,512,8000);

Isto resulta na imagem apresentada na figura 5. Nessa imagem utilizou-se o mapa de cores por omissao

(jet). Pode experimentar com outros mapas de cores usando o comando colormap. Um particularmente

util e:

colormap(hot)

Crie uma imagem semelhante para o chirp invertido z. Determine a gama de variacao da frequencia ins-

tantanea.

6. Junto a este relatorio encontra alguns ficheiros de audio. Use os seguintes comandos para os ouvir e visuali-

zar:

[y,fs] = wavread(’audio1.wav’);

soundsc(y,fs)

subplot(2,1,1); specgram(y,1024,fs,[],900)

subplot(2,1,2); plot(y)

4

Page 5: Analise de sinais apostila

Time

Fre

quency

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.90

500

1000

1500

2000

2500

3000

3500

4000

Figura 2: Representacao da serie de Fourier localizada de um sinal chirp

Interprete os resultados

7. Para o sinal chirp usado anteriormente:

t = [0:1/8000:1-1/8000];

y = sin(2*pi*800*(t.*t));

produza os coeficientes da serie de Fourier usando a funcao serieFourier. Escreva uma funcao Matlab

que use a equacao 2 para reconstruir o sinal original a partir dos coeficientes. A sua funcao Matlab devera

comecar da seguinte forma:

function x = reconstroi(amplitude, fase)

% RECONSTROI - Dado um vector de amplitudes e um vector de fases,

% constroi um sinal que tem estes valores como coeficientes da serie

% de Fourier. Assume-se que os argumentos tem comprimento ımpar,

% p/2+1, e que o vector de retorno tem comprimento p.

E devera realizar a seguinte equacao:

∀n ∈ {m ∈ �|m < p}, x(n) =

p/2∑

k=0

Ak cos(2π fkn + φk)

em que Ak e φk sao respectivamente a amplitude e a fase dos coeficientes da serie de Fourier. Tenha em

atencao que os ındices dos vectores em Matlab comecam em 1.

Note que esta funcao requere um numero elevado de operacoes. Se o seu computador nao for suficientemente

potente, construa os coeficientes de Fourier para as primeira 1000 amostras em vez das 8000 e reconstrua

5

Page 6: Analise de sinais apostila

o sinal a partir desses coeficientes. Para verificar que a reconstrucao funciona, subtraia o sinal reconstruıdo

do sinal original e examine a diferenca. A diferenca podera nao ser exactamente zero, mas devera ser muito

pequena quando comparada com o sinal original. Desenhe o grafico do sinal de diferenca.

8. Iremos agora estudar sinais de batimento que correspondem a combinacao de sinais sinusoidais com frequencias

proximas. Comece por usar as relacoes de Euler para mostrar que:

2 cos(ωct) cos(ω∆t) = cos((ωc + ω∆)t) + cos((ωc − ω∆)t)

em que ωc, ω∆, t ∈ �.

Esta identidade significa que a multiplicacao de dois sinais sinusoidais com frequencias ωc e ω∆ e igual a

soma de duas sinusoides com frequencias ωc + ω∆ e ωc − ω∆.

9. Construa um sinal com a soma de duas sinusoides de frequencias 790 e 810 Hz, amostradas a frequencia

de 8 kHz e com a duracao de 1 segundo. Oica o sinal resultante e descreva o que ouve. Desenhe o grafico

das primeiras 800 amostras. Mostre como e que o grafico ilustra o que ouviu e utilize a identidade da alınea

anterior para explicar o grafico.

10. Qual e o perıodo do sinal da alınea anterior? Qual e a frequencia fundamental da sua expansao em serie de

Fourier? Apresente o grafico da amplitude dos seus coeficientes de Fourier usando a funcao serieFourier.

Desenhe o espectrograma usando specgram. Escolha cuidadosamente os parametros de specgram para a

imagem ser mais clara. Qual dos dois graficos representa melhor o que ouviu?

6