Processamento Digital de Sinais

Prof. Edurardo Parente Ribeiro

Trabalho 4

Grupo de 4 pessoas

Cada equipe deve escolher um tema e comunicar ao professor. Cada tema comportará 3 equipes. Em cada categoria haverá uma competição. As equipes devem implementar os algoritmos em Octave (ou Matlab) e em C (turbo C 2.0). As implementações mais eficientes ganharam mais pontos.
As equipes vencedoras deveram fazer uma apresentação para a turma de seus trabalhos.

I) FILTRO DIGITAL - Implementar um filtro digital IIR de ordem N. O usuario pode especificar a ordem N (entre 1 e 200) e deve fornecer os coeficientes num arquivo "coef.txt" (que contem em cada linha os coeficientes B's e A's respectivamente, separados por espaço.). O sinal de entrada deve ser lido de um arquivo texto "entrada.txt" e o resultado gravado num arquivo "saida.txt", no formato de um numero por linha. A função que calcula o filtro deve operar no modo "tempo real", isto é, cada valor de entrada produz um valor de saída. Esta função deve então ser executada L vezes, onde L é o tamanho do sinal de entrada.
Referências: Oppenheim, capítulo 6

II) FFT - Implementar uma função para o calculo da FFT. A rotina deve ser capaz de calcular a DFT de uma seqüência real com N pontos, onde N é uma potência de 2, lida a partir de um arquivo "entrada.txt". O resultado deve ser gravado no arquivo "saida.txt"
Referências: Oppenheim, capítulo 9, Gonzalez, capítulo 3; Brigham, capítulo 10, Smith, capítulo 3

III) DCT bidimensional - Implementar uma função para o calcula da Transformada Discreta de Cosseno bidimensional.A rotina deve ser capaz de calcular a DCT para qualquer matriz de tamanho NxN, onde N é uma potência de 2. A matriz deve ser lida de um arquivo "entrada.txt". O resultado deve ser gravado no arquivo "saida.txt". Os numeros (colunas) devem ser separados por espaço (ou tabulacao) e as linhas do arquivo devem ser terminadas com "carriage return".
Referências: Jain, capítulo 5, Gonzalez, capítulo 3

IV) FFT bidimensional - Implementar uma função para o calculo da FFT bidimensional. A rotina deve ser capaz de calcular a DFT de uma seqüência real com N pontos, onde N é uma potência de 2.
Referências: Jain, capítulo 5; Gonzalez, capítulo 3

Obs.:
a) A medição do tempo deve ser feita com "tic e toc" no Matlab e função clock() ou equivalente em C.
b) Caso a equipe decida pesquisar um código já existente na internet, pode fazê-lo, porém mencionando sua origem e autores, e inserindo comentários que expliquem passo a passo o programa.
c) Relatório Final: Deve explicar o algoritmo (com fluxograma) e indicar referencias utilizadas.