PROCESSAMENTO DE SINAIS DE ÁUDIO UTILIZANDO O MATLAB

June 13, 2017 | Autor: Eduardo Henrique | Categoria: Audio Signal Processing, Digital Signal Processing, Matlab, Matlab Programming, PDS, MATLAB code
Share Embed


Descrição do Produto

PROCESSAMENTO DE SINAIS DE ÁUDIO UTILIZANDO O MATLAB EDUARDO H. A. COSTA1 1

Curso de Engenharia de Controle e Automação. Faculdade Estácio de Belem – Campus IESAM. Av. Gov. José Malcher, 1148. Bairro de Nazaré. Belem-Pará-Brasil. E-mail: [email protected]

Abstract - This article objective is use the MATLAB to sample, processing and analysis of audio. The sampled signal must pass through a filter bank to withdraw the unwanted frequency , normalize the amplitude of the signal, remove the DC level, remove the silence period, then the program will show a graph containing the original signal in the time domain, the original signal in the frequency domain and the resulting signal of the processing, also in the time domain and the frequency domain to be made the necessary comparisons and observations about the result. Keywords - Digital Signal Processing, Matlab, Fast Fourier Transform. Resumo - Este artigo tem o objetivo de utilizar o MATLAB para realizar a amostragem, processamento e análise de sinais de. O sinal amostrado deverá passar por um banco de filtros para que sejam retiradas as frequências indesejadas presentes no mesmo, normalizar a amplitude do sinal, retirar nível DC, retirar o período de silêncio e em seguida o programa mostrará um gráfico contendo o sinal original no domínio do tempo, no domínio da frequência e o sinal resultante do processamento, também no domínio do tempo e no domínio da frequência para que sejam feitas as devidas comparações e observações a respeito do resultado obtido. Palavras-chave - Processamento Digital de Sinais, Matlab, Transformada Rápida de Fourier

1 Introdução Este artigo relata a utilização do software MATLAB como uma ferramenta completa de engenharia. Nele será desenvolvida uma aplicação de processamento de sinal que irá consistir em uma rotina de retirada de frequências indesejadas através de um banco de filtros passa-faixa, a normalização da amplitude do sinal amostrado, a retirada do nível DC e a retirada do período de silêncio pois, nesse intervalo de silêncio, não há informações úteis para o programa, apenas ruídos. Como exemplo serão utilizadas amostragens de sinais de voz humana por conta da complexidade dos sinais que são produzidos pelo aparelho vocal humano, isso irá facilitar os testes em relação a real eficácia do projeto 2 Objetivo O objetivo deste projeto é, especificamente, realizar amostragens de sinais de áudio através da placa de som do Windows, levar os sinais amostrados à ferramenta MATLAB com uma frequência de amostragem pré-definida, processar o sinal no sentido de retirar frequências indesejadas, normalizar a amplitude, retirar período de silêncio e analisar graficamente de forma precisa o resultado do processamento. Após a etapa de processamento, será demonstrado graficamente o resultado de cada uma das etapas do processamento do sinal para que se perceba a melhora na qualidade da amostra. 3 Justificativa O software MATLAB é uma ferramenta muito utilizada como auxílio à disciplina de Processamento Digital de Sinais. Por conveniência a maioria dos

sinais utilizados como exemplo prático nesta disciplina são os sinais de áudio, isso porquê a ferramenta de captura (microfone) desses sinais está presente na maioria dos computadores e é de fácil acesso. Basta perceber que hoje em dia pode-se dizer que praticamente todos os computadores já vêm de fábrica com uma placa de áudio que possui uma entrada para microfone e caixa de som. Essa ferramenta, por si só, já é um perfeito exemplo de um sensor, um conversor de sinal contínuo para sinal discreto (microfone) ou discreto para contínuo (saída de áudio). Portanto, interligar a placa de áudio do Windows com o MATLAB e o FDATool converge em um método extremamente didático de análise de sinais. Assim como, pode servir como base para projetos mais avançados que utilizem sinais de áudio amostrados e que necessitem filtrar frequências indesejadas, retirar período de silêncio, normalizar amplitude ou retirar nível DC. Um exemplo claro da eficácia desse processamento que o MATLAB é capaz de realizar é a própria aplicação desenvolvida nesse projeto. Outro argumento importante é a possibilidade que o MATLAB disponibiliza para programar um aplicativo de inteligência artificial de boa qualidade através do toolbox de RNA, afinal uma rede neural necessita de um banco de dados de qualidade para ter eficácia. 4 Referencial teórico 4.1 Sinais Contínuos De acordo com Paulo Sergio Ramirez Diniz, Eduardo Antônio Barros da Silva e Sergio Lima Netto (2004), ao ouvirmos o termo “sinal”, é comum que se faça a ligação imediata com algum fenômeno natural que tenha a característica de ocorrer de forma contínua no tempo e que carrega consigo algum tipo de informação , por exemplo, um sinal de voz, de nossos batimentos cardíacos, o da temperatura da

cidade onde moramos, da velocidade do carro durante uma viagem ou da altitude do avião em que estamos viajando. Os engenheiros estão sempre inventando meios de se projetar sistemas que operam, em princípio, no tempo contínuo, para que seja possível medir e interferir com esses e outros fenômenos. Em Oppenheim e Willsky (2010), podemos entender melhor a geração de um sinal contínuo e o mesmo sendo capturado por um equipamento para que seja devidamente medido e/ou manipulado. O exemplo destacado é o do mecanismo vocal humano, que produz fala ao gerar flutuações na pressão acústica, onde a gravação deste sinal é feita através do uso de um microfone que capta as variações na pressão acústica e a converte em um sinal elétrico. “Os sinais podem descrever uma grande variedade de fenômenos físicos. Embora os sinais possam ser representados de diferentes maneiras, a informação do sinal está sempre contida por algum tipo de variação”(Sinais e Sistemas, Pag. 1) 4.1 Sinais Discretos Diniz, Silva e Lima Netto (2014), consideram que sinais no tempo contínuo não podem ser processados com o uso de tecnologia computacional, pelo fato de que as máquinas digitais são especialmente projetadas para lidar com computação sequencial envolvendo números. Felizmente, esse fato não impede o uso de circuitos integrados digitais (que consistem a tecnologia por trás da revolução computacional que vemos hoje em dia) no projeto de sistemas para processamento de sinais. Isso porque muitos sinais tomados da natureza podem ser totalmente representados por suas versões amostradas (essas versões amostradas são sinais que, em determinado valor de tempo, coincidem com o valor real do sinal medido). Segundo os mesmos autores, se queremos processar um sinal no tempo contínuo usando um sistema no tempo discreto, então primeiramente precisamos convertê-lo para o tempo discreto, processar digitalmente a entrada no tempo discreto e então converter a saída no tempo discreto de volta ao domínio do tempo contínuo. Portanto, para que essa operação seja efetiva, é essencial que tenhamos a capacidade de restaurar um sinal no tempo contínuo a partir de suas amostras. Logo, devemos assegurar as condições para que um sinal no tempo contínuo possa ser recuperado a partir de suas amostras. Também elaboramos formas de efetuar essa recuperação. Para fazêlo, em primeiro lugar introduzimos alguns conceitos básicos de processamento analógico de sinais. Proakis e Manolakis (1996) nos dão uma abordagem interessante no que diz respeito à digitalização de sinal. É colocado de forma bem clara que a digitalização é possível graças a três etapas que, se feitas da forma correta, nos dão uma boa representação digital do sinal analógico. Essas etapas são: amostragem, quantização e codificação. A amostragem do sinal discretiza o mesmo no tempo através do processo de

captura periódica de valores do sinal, ou seja, faz amostras, onde a periodicidade dessa amostragem é feita com intervalos uniformes, não por alguma obrigatoriedade, mas para facilitar o trabalho computacional e até mesmo matemático dos dados obtidos. Caso esse sinal tenha que ser convertido para analógico ao final do processo, as suas amostras devem ocorrer com uma frequência igual ou maior do que o dobro da frequência do sinal original pois, segundo o Teorema de Nyquist, essa é a única forma de não se perder dados do sinal original. A quantização do sinal discretiza o sinal na amplitude onde o valor da amostra é arredondado para seu valor inteiro mais próximo (no caso de um sistema mais complexo) ou as casas decimais são totalmente ou parcialmente descartadas (no caso de um sistema mais simples e menos preciso). A codificação é a conversão do sinal amostrado para a “linguagem de máquina”, pois os computadores trabalham com codificação binária, portanto cada valor amostrado terá que ser convertido para a sequência binária que o represente. Oppenheim e Willsky (2010 : 26), consideram um sinal no tempo discreto como aquele que pode ser representado por uma sequencia de números. Por exemplo, a sequência {x (n), n ∈ Z}, onde Z é o conjunto dos números inteiros e pode representar um sinal no tempo discreto onde cada número x(n) corresponde à amplitude do sinal em cada instante nT. Como n é um inteiro, T representa o intervalo entre dois pontos sucessivos nos quais o sinal é definido. As principais vantagens dos sistemas digitais em relação aos sistemas analógicos são a alta confiabilidade, facilidade de modificar as características do sistema e baixo custo. Essas vantagens motivaram a implementação digital e muitos sistemas de processamento de sinais que costumavam ser implementados com a tecnologia de circuitos analógicos. (Diniz; Silva; Lima Netto, 2014:21) As principais vantagens do sistema digital em relação ao sistema analógico, que seria a flexibilidade de se modificar o projeto apenas fazendo modificações no programa, eliminando assim o incômodo de reconfigurar o hardware tendo que fazer testes até que se tenha o resultado desejado. (Proakis; Manolakis, 1996:2) 4.2 Processamento Digital de Sinais O processamento digital de sinais é a disciplina que estuda as regras que governam os sinais que são funções de variáveis discretas, assim como os sistemas usados para processá-los (Diniz; Silva; Lima Netto, 2014). Ela também lida com os aspectos envolvidos no processamento de sinais que são funções de variáveis contínuas utilizando técnicas digitais. O processamento digital de sinais permeia a vida moderna. Podemos citar inúmeras aplicações como por exemplo nos CD players, na tomografia computadorizada, no processamento geológico, nos telefones celulares,

nos brinquedos eletrônicos e muitos outros dispositivos. De acordo com Proakis e Manolakis (1996), um processador digital de sinais pode ser um computador altamente avançando que permite ser programado para realizar diversas tarefas ou um simples microprocessador criado para realizar uma tarefa específicas fazendo com que seja uma alternativa mais barata se comparado à um analógico. 4.3 Matlab “MATLAB® is the high-level language and interactive environment used by millions of engineers and scientists worldwide. It lets you explore and visualize ideas and collaborate across disciplines including signal and image processing, communications, control systems, and computational finance.”( http://www.mathworks.com)

Nesse parágrafo retirado do site oficial do Matlab podemos entender que se trata de uma linguagem de programação de alto nível além de ser um ambiente interativo usado em larga escala por engenheiro e cientistas do mundo todo. Ele permite explorar e visualizar ideias e complementa o estudo de disciplinas como processamento de sinais e imagem, comunicação, sistemas de controle e finanças computacionais. Segundo Haykin e Veen (2001), o objeto básico utilizado pelo MATLAB é uma matriz numérica retangular com elementos possivelmente complexos. Os tipos de objetos de dados encontrado no estudo dos sinais e sistemas se adaptam muito bem à representação matricial. No MATLAB, um sinal de tempo discreto é representado exatamente, porque os valores do sinal são descritos como elementos de um vetor. Por outro lado, o MATLAB fornece somente uma aproximação para um sinal de tempo discreto, cabendo ao programador a tarefa de fazer amostragens compatíveis com o grau de exatidão que sua aplicação exige, pois, a aproximação consiste num vetor cujos elementos individuais são amostras do sinal de tempo contínuo subjacente. Para Lathi (2007), o MATLAb é uma linguagem de programação sofisticada que serve como uma poderosa ferramenta para um melhor entendimento de uma vasta gama de tópicos. Dentre esses, podemos citar a teoria de controle, projeto de filtros, inteligência artificial e, obviamente, sistemas lineares e sinais. A estrutura de programação flexível do MATLAB promove um rápido desenvolvimento e análise. A capacidade impressionante de visualização possibilita uma apreciação única do comportamento do sistema e caracterização do sinal. Como qualquer linguagem, o aprendizado do MATLAB é incremental e requer prática. 4.4 Inteligência Artificial Segundo Artero (2009), a inteligência artificial (IA) é uma área extremamente interdisciplinar, pelo fato de usar uma grande quantidade de conhecimentos vindos de várias áreas, como cálculo e lógica

matemática. Da computação, utiliza muitas técnicas da área de banco de dados, compiladores e estruturas de dados. Além destas, a robótica e o processamento de sinais também contribuem com a IA. Constata-se ainda que não apenas as disciplinas das ciências exatas contribuem com a área, pois várias técnicas de IA tem suas origens na Biologia, uma vez que diversos modelos usados na área são inspirados em modelos biológicos. A Inteligência Artificial é o ramo da computação preocupada com a automação de comportamento inteligente (Luger; Stubblefield apud Fernandes, 2005, p. 2) 4.5 Redes Neurais Artificiais Braga et al. definem as Redes Neurais Artificiais como sistemas paralelos distribuídos compostos por unidades de processamento simples que calculam determinadas funções matemáticas (normalmente não-lineares). Tais unidades são dispostas em uma ou mais camadas interligadas por um grande número de conexões, geralmente unidirecionais. Na maioria dos modelos estas conexões estão associadas a pesos, os quais armazenam o conhecimento apresentado no modelo e servem para ponderar a entrada recebida por cada neurônio da rede. O funcionamento destas redes é inspirado em uma estrutura física concebida pela natureza: o cérebro humano. Embora as redes neurais possam ser usadas para resolver vários problemas práticos, a sua maior utilização é na resolução de problemas que podem ser classificados como o reconhecimento de padrões, o que inclui uma ampla gama de aplicações, como o reconhecimento de voz, imagens (faces, impressões digitais) e objetos em geral. (Artero, 2009 : 123) 5 Métodos e Procedimentos Inicialmente foram feitos inúmeros programas básicos no MATLAB utilizando funções simples tais como load, sound(x,Fs), plot(x,y), subplot, rand, wavrecord, wavwrite, dentre outras. Esses programas foram feitos apenas com o objetivo de entender como o Matlab se comporta no sentido de ler, plotar e reproduzir sinais de áudio. Em seguida foram feitas pesquisas para encontrar funções que fizessem o MATLAB interagir com a placa de som do Windows, isso iria tornar dispensável a confecção de placas de circuito impresso para a realização das amostragens de sinais de voz. A partir desse momento já foi possível iniciar a criação do software para realizar as tarefas específicas pretendidas por esse projeto. A primeira função importante utilizada no programa é a especificada a seguir: x=waverecord(n,Fa,ch,’dtype’)

Essa função faz n amostras do sinal capturado pela placa de som do Windows através do microfone. A captura é feita em uma frequência de amostragem fa, que deve ser especificada sem esquecer do teorema da amostragem de Nyquist, que é bem claro ao enfatizar que, caso o sinal amostrado precise ser reproduzido posteriormente com qualidade desejável, as amostras devem ser feitas com o dobro da frequência do sinal original. O aparelho vocal humano tem capacidade de produzir sons que vão aproximadamente de 80Hz a 4kHz, portanto a amostragem do sinal para sinais de voz deve ser de, no mínimo, 8kHz. O parâmetro ch é onde será definido se o som é mono ou estéreo. E por último o parâmetro dtype é onde são definidos os bits, sendo possível escolher entre double(16bits) e single(8bits). Na prática, é essa função que desempenha o papel de utilizar o sinal do microfone para ser convertido em dados legíveis ao MATLAB e posteriormente transformado em um sinal de áudio. Para esse projeto foram feitas 10000 amostras com uma frequência de amostragem de 10kHz, 8bits, mono e uma duração de gravação de 1 segundo, tempo suficiente para pronunciar as palavras usadas nesse projeto. Em seguida foi utilizada a função: wavwrite(x,Fa,'nome do áudio') Essa utiliza os parâmetros de x (onde ficam guardados os valores de amplitude) para salvar o sinal de voz em um formato wav. Esse sinal é gravado diretamente na pasta do MATLAB com o nome que é definido pelo programador e sua respectiva frequência de amostragem. A próxima função importante utilizada na parte inicial do programa foi [x,Fa,wav]=wavread('nome do áudio') Através dessa função o usuário pode selecionar uma das amostras obtidas para que a mesma seja utilizada no seu programa. A partir desse momento se inicia a etapa de manipulação do sinal de áudio. A função fdatool permitiu a criação de um banco de filtros que ficou especificado para filtrar frequências abaixo de 80Hz e acima de 3,5kHz para que grande parte dos sinais ruidosos fossem eliminados e fossem mantidas somente aquelas frequências que possivelmente foram produzidas pelo aparelho vocal humano. Apesar de ter sido dito que é possível ao aparelho vocal humano produzir sons até 4kHz, os sinais que mais se aproximam disso são considerados casos especiais ou raros. Portanto, para que o programa fique um pouco mais simplificado e prático, foram descartadas as amostras com mais de 3,5kHz (o que já é considerada uma frequência muito alta). Foi utilizada a transformada rápida de Fourier para que os sinais filtrados e os sinais originais tivessem suas respectivas representações no domínio da frequência. Isso se deve ao fato de que, observando-se o

espectro de frequência, fica muito mais evidente o resultado do banco de filtros. Para esse programa foi usado um filtro chebychev tipo 2. Depois de serem feitas algumas comparações com os resultados do butterworth e chebychev tipo 1, foi verificado através dos gráficos da frequência que o chebychev tipo 2 foi o que menos modificou as amostras dentro dos limites de frequência que era desejável que fosse mantida. Após a atuação do banco de filtros, foi realizada uma rotina de programação que retirou os períodos considerados como silêncio, existem várias técnicas para detecção de inicio e fim de fala, a definida para esse projeto levou em conta o gráfico de energia do sinal. Para tal, foi definida uma energia mínima a ser atingida pelo sinal para que o mesmo fosse considerado como período de fala. Esse gráfico é calculado elevando todos os valores de amplitude do sinal ao quadrado através da função x_c=x.^2, a partir daí o valor máximo de energia observado no sinal é tomado como parâmetro para descartar alguns pontos de amostragem, pois os valores que serão considerados como silêncio serão os que não atingirem no mínimo 5% do valor máximo de energia. Tal valor foi definido através de testes e observação do gráfico resultante em que o objetivo era suprimir os sinais de baixa amplitude (silêncio) sem que os períodos de fala fossem afetados. A última etapa do processamento consistiu em normalizar a amplitude do sinal e retirar o nível DC. O nível de amplitude do sinal é definido pela intensidade em que esse som excita ao sensor que o capta (microfone). Caso o locutor pronuncie o sinal muito perto do microfone, por exemplo, as ondas chegam ao sensor com uma intensidade maior fazendo com quem o sensor produza correntes mais intensas, daí vem o a expressão “nível DC”. A normalização da amplitude veio como alternativa para que o programa pudesse descartar as diferenças referentes à intensidade em que o som foi produzido através do gráfico de energia do sinal. Com o processamento devidamente executado, o sinal de áudio foi regravado no banco de dados utilizando a mesma função wavwrite, porém já com os novos parâmetros. 6 Resultados O resultado final desse projeto foi dividido em dois programas, ambos desenvolvidos no MATLAB. Um deles executa a amostragem, processamento e montagem do banco de dados. O segundo é responsável por fazer a chamada do banco de dados, fazer o reconhecimento da palavra e dar uma resposta ao usuário informando a palavra reconhecida. Para facilitar a compreensão a respeito da estrutura geral do projeto, será demonstrado o passo-a-passo necessário para o reconhecimento de uma palavra. O programa reconhece até então um número de quatro comandos (pelo motivo de ainda não ser necessário o treinamento de mais comandos). Porém, como o processo é o mesmo para todos, foi definido o co-

mando “Ligar” como objeto de demonstração prática daquilo que foi desenvolvido. A Figura 1 representa a interface do primeiro programa. Nessa interface o programa informa ao usuário primeiramente a palavra que está sendo gravada naquele momento, o comando que deverá ser utilizado para iniciar a gravação (comando 1) e o comando utilizado para encerrar o programa (comando 2). Será exibida a mensagem “Gravando...” durante a amostragem do áudio e a mensagem “Fim da Gravação” ao final da amostragem. A partir do momento em que o usuário gravar uma amostra o programa irá reproduzir o sinal de áudio gerado, irá reproduzir o sinal de áudio processado e irá mostrar uma série de imagens contendo o gráfico do sinal amostrado e do sinal processado, ambos em suas representações no domínio do tempo e da frequência. É importante observar atentamente os gráficos pois eles irão demonstrar se o sinal gravado está adequado para ser utilizado no banco de dados. Caso o sinal não esteja adequado, basta que o usuário utilize novamente o comando 1 para que um novo sinal seja gravado sobrepondo o sinal anterior.

Figura 3 – Sinal de voz sem processamento no domínio da frequência referente a palavra “Ligar”.

A partir do momento que se tem a representação do sinal no domínio da frequência, o banco de filtros atua no sentido de fazer a leitura do sinal e eliminar as frequências indesejadas. O resultado é demonstrado na Figura 4.

Figura 4 – Sinal de voz com processamento no domínio da frequência referente a palavra “Ligar”.

Com as frequências indesejadas já minimizadas drasticamente pelo banco de filtros, o sinal volta à sua representação no domínio do tempo. O próximo passo é a normalização e retirada do período de silêncio. Ambas as técnicas foram explicadas anteriormente, portanto agora será demonstrado o resultado final desse procedimento através do gráfico do sinal que será finalmente gravado no banco de dados (Figura 5).

Figura 1 – Menu do programa de processamento de sinal.

O primeiro gráfico que é fornecido ao usuário (Figura 2), trata-se do sinal gravado, obviamente que ainda em sua forma bruta, sem qualquer tipo de processamento e no domínio do tempo. Nele o usuário pode verificar de forma um pouco limitada o nível de ruído presente no ambiente.

Figura 5 – Sinal de voz com processamento no domínio do tempo referente a palavra “Ligar”.

A partir de um sinal ruidoso e com algumas distorções, ao final do processamento foi possível isolar a palavra “Ligar” de forma satisfatória. 7 Conclusão

Figura 2 – Sinal de voz sem processamento no domínio do tempo referente a palavra “Ligar”.

Em seguida o sinal gravado passa por uma transformada de Fourier, onde será possível verificar o espectro de frequência do mesmo (Figura 3). A partir do espectro de frequência é possível verificar com mais precisão os ruídos presentes no sinal.

Nesse projeto ficou claro a importância de um bom processamento do sinal que irá para o banco de dados da rede neural, utilizando o processamento de forma adequada, com técnicas de filtragem que atendam às necessidades do sistema. Isso facilita o trabalho da rede neural de retirar os padrões de fala presentes no sinal. Mesmo com o fato de o sinal produzido pelo aparelho vocal humano ser de grande complexidade, foi possível desenvolver esse projeto com equipamentos

de hardware simples. Não foram utilizados equipamentos profissionais de captura de áudio ou um computador com configurações avançadas. Isso só é possível caso as teorias sejam aplicadas de forma correta com o objetivo de maximizar a eficiência no uso dos equipamentos disponíveis. Os resultados da rede neural utilizados nesse projeto ficaram dentro do pretendido, porém para que um projeto como esse seja aceito em um mercado que já possui soluções de reconhecimento de voz, é necessário que o banco de dados seja aprimorado no sentido de possuir amostras de diferentes pessoas, com diferentes sotaques, levando em consideração o sexo masculino e feminino. Assim como fazer um refinamento nos parâmetros adotados para que a taxa de acerto aumente, afinal os resultados mais consistentes aconteceram com palavra que possuem um nível de complexidade pouco elevado. 8 Trabalhos Futuros Como trabalhos futuros referentes ainda ao tema desse projeto, pode-se destacar o aprimoramento da rede neural utilizada, o treinamento de novos comandos, a criação de uma interface mais elaborada para os programas e a busca por técnicas de diminuir o sinal de entrada para facilitar o treinamento da rede. Gostaria também de destacar a necessidade de se fazer uma nova abordagem no que diz respeito às amostras dos sinais do banco de dados. Para que a rede seja mais completa, é necessário adotar um banco de dados, não com palavras completas, mas sim com fonemas. Para que através da junção dos fonemas reconhecidos o sistema defina a palavra pronunciada. Isso irá dispensar a necessidade de o usuário ter que gravar amostras de sinal sempre que necessitar acrescentar um comando novo. 9 Referências Bibliográficas Diniz, P. S. R. ; Silva, E. A. B. and Lima Neto, S. (2014)“Processamento Digital de Sinais: Projeto e Análise de Sistemas”. 3ª Edição. Bookman, Porto Alegre, RS. Haykin, S. and Veen, B. V. (2001/2007). “Sinais e Sistemas”. Bookman, Porto Alegre, RS. Lathi, B. P. (2007). “Sinais e Sistemas Lineares” Bookman, Porto Alegre, RS. Lobato Junior, W. V. ; Sena, A. J. ; Almeida Sobrinho, Elionai Gomes de ; Bezerra, Johelden. (2014). “Sistema de Coleta e Armazenamento de Dados Ambientais”. Apresentação em evento. MathWorks. Disponível em: Acesso em: jun. 2015. Oppenheim, A. V. and Willsky, A. S. (2010). “Sinais e Sistemas”. 2ª Edição. Pearson Education do Brasil, São Paulo.

Proakis, J. G. and Manolakis, D. G. (1996). “Digital Signal Processing: Principles, Algorithms and Applications”. 3° Edition. Prentice-Hall, New York.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.