Sistemas e Sinais
Guião das Aulas Práticas
António Navarro
João Manuel Rodrigues
Departamento de Electrónica e Telecomunicações
Universidade de Aveiro
2005-2006
2
Aula 1
Sinais (Unidimensionais)
Resumo:
- Familiarização com o ambiente de trabalho.
- Manipulações simples de sinais digitais unidimensionais.
Este guião é um trabalho em progresso e, por enquanto, bastante incompleto. Na
página das aulas práticas de SS1 poderá encontrar a última versão deste guião2 , bem como
outras informações e dados referentes às aulas práticas de Sistemas e Sinais. Se detectar
algum erro ou tiver alguma sugestão, por favor informe os autores.
Exercı́cio 1.1
Copie o conteúdo do directório aula13 para a sua área de trabalho. Localize o ficheiro
santos.wav e ouça-o usando uma aplicação apropriada. Observe a página de propriedades
desse ficheiro e registe os parâmetros fundamentais do sinal: frequência de amostragem,
número de canais, número de bits por amostra, duração. A partir destes valores, determine
o número de bytes ocupados pela informação áudio e compare-o com a dimensão do ficheiro.
(Além da informação áudio, os ficheiros WAV têm um cabeçalho que ocupa algumas dezenas
de bytes.)
Exercı́cio 1.2
No Matlab, pode ler o ficheiro santos.wav para uma matriz, usando o comando
[x,fa,nb] = wavread(’santos.wav’);
onde x é o vector ou matriz que fica com as amostras do sinal, fa indica a frequência de
amostragem e nb indica o número de bits de resolução de cada amostra.
Com o comando
1
http://www.ieeta.pt/˜jmr/ss/
http://www.ieeta.pt/˜jmr/ss/guiao.pdf
3
ftp://www.ieeta.pt/˜jmr/ss/aula1
2
1
sound(x,fa,nb);
pode ouvir o sinal x através da placa de som, a um ritmo de fa amostras por segundo e
com resolução de nb bits. Há vários pormenores a ter em conta quando se usa esta função:
por um lado, o sinal x deve ter valores pertencentes ao intervalo [−1, +1[, caso contrário
será ouvido com distorção; por outro lado, não é garantido que a placa de som e/ou o
sistema operativo suportem frequências de amostragem ou resoluções arbitrárias. 4
Usando comandos do Matlab,
A. Determine o número de canais desse sinal (ou seja, se é mono- ou estereofónico) e o
número de amostras por canal.
B. Calcule a duração do sinal.
C. Determine o número exacto de bytes ocupados pelas amostras do sinal.
D. Quantos minutos de áudio neste formato poderia gravar num CD (de 700 MB)? E
num DVD (de 4.5 GB)?
E. Determine os valores máximo e mı́nimo do sinal em cada canal.
F. Multiplique o sinal por 1/10 e ouça o resultado. Que diferença notou?
G. Multiplique o sinal por 10 e ouça o resultado. Que aconteceu?
Exercı́cio 1.3
Crie uma versão monofónica fazendo a média dos dois canais do sinal x e grave o resultado
usando o comando
wavwrite(y,fa,nb, ’santos-mono.wav’);
sendo y o sinal monofónico criado. Verifique as propriedades do novo ficheiro.
Exercı́cio 1.4
Traçe um gráfico (das primeiras 1000 amostras) do sinal x com o eixo do tempo marcado
em segundos. Explore o gráfico, ampliando diversas zonas com o comando axis ou usando
as possibilidades de zoom fornecidas pelo Matlab. Sugestão: crie primeiro um vector
t com comprimento igual ao do sinal e contendo os valores dos instantes de amostragem
correspondentes.
4
Algumas frequências de amostragem mais usualmente suportadas são: 44100 amostras/s, 8000 amostras/s, e outras relacionadas com estas como 22050, 11025, 16000, 32000 e 48000 amostras/s. Resoluções
de 16 ou 8 bits/amostra são usuais, algumas placas mais recentes permitem até 24 bits/amostra.
2
Exercı́cio 1.5
A partir do sinal lido anteriormente:
A. Crie um novo sinal composto apenas pelas amostras de ı́ndice par.
B. Ouça o novo sinal, mantendo a frequência de amostragem e a resolução. Que aconteceu ao sinal? (No que diz respeito à duração e tonalidade.)
C. Ouça-o novamente, especificando agora um ritmo de amostagem de metade do original.
Exercı́cio 1.6
Apesar de as amostras dos sinais áudio serem armazenadas no Matlab como números
reais entre −1 e +1, no ficheiro original são de facto armazenadas como números inteiros
com nb dı́gitos binários. Ao ler esses números, o comando wavread do Matlab divide-os
pela máxima amplitude que pode ser codificada com nb bits, ou seja 2nb−1 (para números
com sinal). Assim, as amplitudes do sinal ficam normalizadas: um sinal de amplitude
máxima terá sempre amplitude 1 no Matlab, independentemente da resolução usada na
gravação do sinal.
Execute o comando x(1:20,:) para observar os valores das primeiras 20 linhas da
matriz x. Multiplique por 215 = 32768 e verifique que os valores resultantes são inteiros.
Exercı́cio 1.7
O ficheiro santosC.mp3 é uma versão do sinal santos.wav, codificado no formato MPEGLayer III com um débito de 128 kbit/s.5 A respectiva descodificação produziu o ficheiro
santosD.wav.
A. Leia o sinal decodificado e compare-o com o original.
B. Determine o desfazamento (atraso) entre os dois sinais. (Pode fazê-lo “manualmente”, por tentativa e erro e recorrendo a gráficos. Como desafio, pense como
poderia automatizar este processo e escreva uma função que o faça.)
C. Calcule e ouça a diferença dos dois sinais depois de compensar o seu desfazamento.
D. Determine a potência (energia média por amostra) do sinal original e do sinal diferença, e ache a relação sinal-ruı́do (SNR), expressando-a em dB (decibel).6
5
Foi usado o codificador LAME, versão 3.96.1, com a opção -h.
O decibel é uma unidade de medida logarı́tmica de uma relação de potências. Assim, se dois sinais
têm potências P1 e P2 , a sua relação de potências é de 10 log10 (P1 /P2 ) dB.
6
3
4
Aula 2
Sinais (Bidimensionais)
Resumo:
- Familiarização com o ambiente de trabalho.
- Manipulações simples de sinais digitais bidimensionais (imagens).
Exercı́cio 2.1
Copie o conteúdo do directório aula21 para a sua área de trabalho. Localize o ficheiro
Baboon_gray.tif e Baboon_RGB.tif e visualize-os usando uma aplicação apropriada. Observe a página de propriedades desses ficheiros e registe os parâmetros fundamentais das
imagens: altura, largura e número de bits por pixel. A partir destes valores, determine o
número de bytes ocupados por cada imagem e compare-os com as dimensões dos respectivos ficheiros. (Além da informação de imagem, os ficheiros TIFF têm um cabeçalho que
ocupa alguns bytes.)
Exercı́cio 2.2
No Matlab, pode ler os ficheiros das imagens usando o comando
[X,MAP] = imread(’FILENAME’, ’FMT’);
e pode visualizá-las com o comando
image(X);
Usando comandos do Matlab,
A. Determine o número exacto de bytes ocupados por cada imagem. Poderá necessitar
de obter informações com o comando imfinfo.
1
ftp://www.ieeta.pt/˜jmr/ss/aula2
5
B. Num CD (de 700 MB), quantas imagens com a dimensão e resolução de Baboon_RGB.tif
poderia gravar? E num DVD (de 4.5 GB)?
C. Quantas imagens destas poderão ser transmitidas, por segundo, através de uma
ligação ADSL de 2 Mbit/s.
D. Determine os valores máximo e mı́nimo de cada imagem.
E. Multiplique cada imagem por 1/2 e observe o resultado. Que diferença notou?
F. Multiplique por 8 e observe o resultado. Detecta saturação? E outros artefactos?
Exercı́cio 2.3
Crie uma função
Y = rgb2gray(RGB);
que converta uma imagem a cores (RGB) para uma imagem em nı́veis de cinzento Y. Os
valores de luminância podem ser obtidos por combinação linear das componentes (R, G, B)
pela expressão Y = 0.299R + 0.587G + 0.114B.
Experimente converter a imagem Baboon_RGB.tif e compare o resultado com a imagem
Baboon_gray.tif previamente visualizada.
Exercı́cio 2.4
A. Converta a imagem a cores RGB para YUV e separe as componentes em três matrizes
Y, U e V.
B. Reduza por 2 a resolução vertical e horizontal das componentes U e V.
C. Reponha a resolução original, repetindo os valores das amostras, e reconverta para
RGB.
Exercı́cio 2.5
Traçe o histograma da imagem I.
6
Aula 3
Série/Transformada de Fourier
Exercı́cio 3.1
Considere uma sequência [xn ] = [1, 2, −2, 4, 6, 4, 5, 4] e a expressão da DFT dada por
N −1
2π
1 X
Xk = √
xn e−j N kn ,
N n=0
onde N é o número de elementos da sequência.
A. Usando o Matlab, determine Xk .
B. Visualize a parte real, imaginária, módulo e fase de Xk e tire conclusões sobre as
simetrias.
C. Considerando as simetrias de Xk , qual é o número mı́nimo de coeficientes que permite
recuperar Xk completamente. Identifique esses coeficientes.
D. Generalizando, considerando xn real de comprimento N par e as simetrias de Xk ,
deduza o número mı́nimo de coeficientes em função de N que permite determinar xn
completamente.
E. Elimine (colocando-os a zero) os coeficientes de Xk de menor energia, isto é, de valores
|Xk |2 < 5. Determine a taxa de compressão obtida e a perda de qualidade.
F. Elimine os coeficientes de menor energia que conduzem a uma perda de qualidade
não superior a 20%. Determine a taxa de compressão obtida.
G. Elimine os coeficientes de menor energia que conduzem a uma compressão de pelo
menos 2 vezes. Determine a perda de qualidade.
Exercı́cio 3.2
Considere uma sequência [xn ] = [1, 2, −2, 4, 6, 4, 5, 4, −1]. Repita as alı́neas do exercı́cio
anterior, reparando que agora N é impar.
7
Exercı́cio 3.3
Considerando uma frequência de amostragem de 8000 Hz, gere sequências de 4000 amostras
dos sinais:
x(t) = cos(20π t)
w(t) = cos(22π t)
y(t) = 0.3 ej 40π t
+0.5 se x(t) ≥ 0.1
z(t) =
−0.5 se x(t) < 0.1
(3.1)
(3.2)
(3.3)
(3.4)
A. Trace gráficos destes sinais periódicos. (Represente o sinal complexo com duas linhas
sobrepostas.)
B. Indique as suas frequências e perı́odos.
C. Aplique a DFT a cada um dos sinais e observe o resultado em módulo/fase ou
parte real/parte imaginária. Identifique os ı́ndices das componentes fundamentais
e relacione-as com as frequências dos sinais.
Exercı́cio 3.4
A função dtmfe fornecida na pasta aula31 permite gerar sequências de tons multifrequência
(DTMF) usados em sinalização telefónica. Experimente, por exemplo,
sound(dtmfe(’123456789’),8000,16) .
Isole cada um dos algarismos e analise-os com uma transformada discreta de Fourier (DFT)
de forma a identificar as frequências das suas componentes sinusoidais com erro inferior a
20 Hz.
Exercı́cio 3.5
Escreva uma função que permita descodificar sinais DTMF usando análise de Fourier e
aplique essa função para tentar descodificar os sinais dtmf pin.wav 2 e dtmf santos.wav 3 .
Sugestão: aplique a DFT a trechos sucessivos do sinal e avalie a energia em torno das
oito frequências usadas nos tons DTMF. (Falta indicar as especificações dos sinais DTMF:
frequências, durações, amplitudes e respectivas tolerâncias. Para já, pode procurar na
WEB.)
1
ftp://www.ieeta.pt/˜jmr/ss/aula3
ftp://www.ieeta.pt/˜jmr/ss/aula3/dtmf pin.wav
3
ftp://www.ieeta.pt/˜jmr/ss/aula3/dtmf santos.wav
2
8
Aula 4
Sistemas Lineares e Invariantes no
Tempo
Alguns sinais elementares úteis para a análise de sistemas.
1 se n = 0
.
O impulso unitário: δ(n) =
0
se
n
=
6
0
1 se n ≥ 0
O degrau unitário: u(n) =
.
0 se n < 0
Exercı́cio 4.1
Considere o sistema descrito pela equação diferença y(n) = x(n) − 0.9x(n − 4).
A. Represente esquematicamente este sistema.
B. Determine manualmente, recorrendo a uma tabela, as primeiras 10 amostras (para
n = 0, 1, 2, . . . , 9) da resposta impulsional do sistema.
C. Determine ainda as primeiras amostras das respostas aos sinais x(n) = u(n − 2) e
s(n) = cos(πn/2) u(n).
D. Repita os exercı́cios anteriores no Matlab, aproveitando para traçar gráficos dos
sinais. Sugestão: pode usar a função filter para implementar qualquer sistema
causal descrito por uma equação diferença linear. Para sistemas com resposta impulsional finita (FIR) também pode usar a operação de convolução (conv).
Exercı́cio 4.2
Um dado sistema digital calcula em cada instante a média aritmética das cinco últimas
amostras que recebeu.
A. Traçe um diagrama esquemático desse sistema.
B. Escreva uma equação diferença que descreva o sistema.
9
C. Calcule a resposta do sistema aos sinais: x1 (n) = 2δ(n)+δ(n−10), x2 (n) = δ(n−12),
x3 (n) = x1 (n) + x2 (n).
D. Observe e registe a amplitude da resposta em regime estacionário do sistema a sinusóides da forma x(n) = cos(ωn), para os seguintes valores de frequência angular:
ω = 0, 0.1π, 0.2π, . . . , 0.9π, π. Calcule a resposta em frequência do sistema usando
freqz e confirme os resultados que mediu.
E. Aplique este sistema a um sinal de áudio e ouça o resultado.
F. Que quantidade de memória e quantas operações aritméticas (adições e multiplicações)
precisa para calcular cada amostra do sinal de saı́da?
Exercı́cio 4.3
Considere o sistema descrito pela equação diferença recursiva:
y(n) = 0.9y(n − 1) + 0.1x(n).
Y (z)
A. Escreva a função de transferência do sistema H(z) = X(z)
. Ache os seus zeros e pólos
e trace-os num diagrama (use as funções roots e/ou zplane).
B. Determine a resposta em frequência do sistema às frequências ω = 0, 0.25π, 0.5π.
Calcule a partir da função de transferência (pode usar a função polyval) e confirme
com freqz.
C. Determine e faça gráficos da resposta do sistema aos sinais:
x1 (n) = 3 cos(0.02πn + 0.1π) + r(n),
x2 (n) = u(n − 10) − 2u(n − 50) + u(n − 90) + 0.1r(n),
onde r(n) representa um ruı́do gaussiano de média nula e variância unitária que pode
ser gerado no Matlab com a função randn.
Exercı́cio 4.4
Considere um sistema descrito por
(z − 1)(z + 1)
1 − a2
· 2
H(z) =
2
z − (2a cos ω)z + a2
com a e ω reais e 0 < a < 1.
A. Escreva uma equação diferença deste sistema.
10
B. Ache os seus pólos e zeros.
C. Para a = 0.9 e ω = 0.2π, trace a resposta em frequência do sistema e verifique que
este se comporta como um filtro passa-banda. Determine a frequência central da
banda passante e a largura de banda a 3 dB (a largura entre os pontos a cerca de
70% da amplitude máxima).
D. Repita a alı́nea anterior variando ω e a.
E. Ache ω e a para implementar um filtro que isole as componentes de frequências em
torno de 770 ± 15 Hz de um sinal amostrado a 8000 amostras por segundo. Aplique
este filtro ao sinal dtmf pin.wav 1 e/ou a outros sinais gerados com a função dtmfe.
F. Estude a possibilidade de usar um banco de filtros deste tipo para implementar um
detector de sinais DTMF.
Exercı́cio 4.5
O sinal ecgr, que pode carregar (load) do ficheiro ecgr.mat2 , contém um registo de um
electrocardiograma (ECG) amostrado à taxa de 500 amostras por segundo. Esse sinal
encontra-se corrompido por uma forte interferência sinusoidal que se pretende eliminar.
A. Usando a DFT, identifique a frequência da interferência, F0 em Hz e a correspondente
frequência angular normalizada ω0 em rad/amostra.
B. Determine o valor do coeficiente C0 ∈ R tal que a função de transferência
H(z) = 1 + C0 z
−1
+z
−2
z 2 + C0 z + 1
=
z2
tenha ganho zero à frequência ω0 .
C. Verifique o resultado, traçando a resposta em frequência do sistema H(z).
D. Determine a resposta deste sistema ao sinal ecgr. Conseguiu eliminar a interferência?
Para comparação, pode encontrar uma versão não corrompida do sinal no ficheiro
ecg.mat3 .
Exercı́cio 4.6
Considere os sistemas
1
1 + z −1
F (z) = 0.3
1 − 0.4z −1
ftp://www.ieeta.pt/˜jmr/ss/aula3/dtmf pin.wav
ftp://www.ieeta.pt/˜jmr/ss/sinais/ecgr.mat
3
ftp://www.ieeta.pt/˜jmr/ss/sinais/ecg.mat
2
11
e
G(z) =
1 1 + 2z −1 + z −2
·
.
8 1 − z −1 + 0.5z −2
A. Determine a resposta em frequência de cada um dos sistemas bem como da sua
combinação em cascata, H(z) = F (z)G(z), e compare-as.
B. Verifique experimentalmente que a resposta do sistema a um dado sinal x(n) pode
obter-se por aplicação do sistema H ou por aplicação sucessiva dos sistemas F e G.
Exercı́cio 4.7
O fenómeno do eco, que ocorre quando uma onda sonora atinge o receptor depois de
reflectida por exemplo numa parede distante, pode ser modelado simplesmente por um
atraso e uma atenuação dependentes da distância. (INCOMPLETO.)
12
Download

Guião das aulas práticas - Universidade de Aveiro › SWEET