Baixe o app para aproveitar ainda mais
Prévia do material em texto
Análise e processamento de Sinais MINTER. Relatório de Análise de Sinais MINTER. Aluno: Edsel Freitas Portilho. Prof. João Antônio Pereira. Dep. Eng. Mecânica.Av. Brasil nº 56 UNESP - UNIRV - MINTER 2015. Programa de apresentação final de Análise de Sinais. Profº: João Antônio Pereira. Aluno: Edsel Freitas Portilho. Relatório da disciplina de Análise de Sinais. O objetivo desde trabalho é relatar o desenvolvimento da implementação de um aplicativo que possibilite a simulação de diferentes tipos de sinais senoidais, proporcionando a soma dos sinais de senos, acrescentar a este sinal resultante um sinal de interferência ou de ruído branco gerado randômico ou através de um ruído branco Gausiano. Gerar a função porta e função impulso, plotar os gráficos e avaliar o comportamento dos sinais em tempo, plotar os gráficos e avaliar o comportamento dos sinais em frequência, ler um arquivo com dados experimentais e processar os dados. A implementação dos dados foi feita através da leitura de uma tabela Excell , Figura 1. Figura tab1 De onde foram obtidos os seguintes dados por coluna: 1)Frequência1. 6Hz 2)Amplitude1. 10 3)Frequência2. 18 Hz 4)Amplitude2. 03 5)Frequência amostral. 500Hz 6)Tau. 0,1 7)numero de pontos amostra. 300 A alteração dos valores neste arquivo Excell gerarão novos gráficos, para este relatório manteremos estes valores, como exemplo de estudo das funções. Assim como o ruído assumirá valores diversos a cada vez que for rodado ou executado o aplicativo pois há uma geração do sinal randômico de ruído. A primeira atividade foi implementar no MATLAB a geração dos gráficos de duas funções senoidais, de f1= 6Hz de Y1(t) e f2=18Hz de Y2(t) e fazer a soma das duas funções, Y1(t) + Y2(t), nos fornecendo a função resultante. Plotamos seus respectivos gráficos na Figura 2. Onde estão representadas as três formas de ondas Y1(t) , Y2(t) e Y1(t) + Y2(t). Continuando a implementação e análise dos sinais, gerou-se um sinal de ruído a partir de um valor randômico com amplitude de 1, y0(t), para ser somado ao sinal resultante da soma das senóides, y1(t)+y2(t). Figura 3. Nota-se a presença do sinal de ruído distorcendo a o formato da onda da somatória das senóides. A figura 4 apresenta as ondas obtidas até o momento, em uma tabela com todos os gráficos, senóide de 6Hz, senóide de 18Hz, soma das duas, do ruído. Com destaque para a onda do somatório das frequências e ruído. (F1+F2+r), Para efeito de analisar o gráfico adotamos a primeira onda, como a composta com ruído, (F1+F2+r), e para a segunda onda, somou-se as duas separadamente ao ruído obtendo a resultante da soma destes dois sinais, ((F1+r)+(F2+r)), e na terceira onda, o ruído resultante da diferença entre os dois primeiros sinais, ocorridas devido a soma do ruído em cada frequência na segunda onda. Tomando o gráfico da primeira onda, a composta com ruído (F1+F2+r), como base dos estudos seguintes de série de Fourier para os sinais periódicos e da utilização da transformada de Fourier para os sinais não periódicos. Assim como seu uso em conjunto para estudo e análise do espectro do sinal. O espectro de sinal de uma função do “tempo”, convertido em um objeto matemático como uma função sinal, a partir da variável que representa uma frequência angular, informando a medida de frequência do sinal. Figura 6. Na Figura 7, ve-se o grafico da primeira iteração da transformada rapida de fourier informando a amplitude das frequências principais F1=6Hz e F2=18Hz, ou medida de frequência do sinal. Plotando o modulo da transformada de Fourier. Fazendo a forma triangular do sinal de amostra, obteve-se os sinais dente de serra e da sua transformada rápida de Fourier, demostrando na Figura 8. Através transformada rápida de Fourier , traçou-se o gráfico de frequência centralizado, Figura 9. Assim foi desenvolvido um filtro passa faixa para F1=6Hz E F2=18Hz, para filtrar a onda amostrada com ruído, (F1+F2+r), sendo o espectro da faixa de corte em vermelho e o espectro da onda a sendo azul, Figura 10. Na Figura 11, trabalhamos com a passagem do sinal ade amostra com ruído, onda 1, pelo filtro passa faixa, resultando a onda 2, e foi acrescentado o gráfico de onda 3 da onda original antes do incremento do ruído, para comparação gráfica. Por fim foi feito a decomposição do sinal de amostra sem ruído, (F1+F2) onda 1, e retirado por filtro o sinal da F1=6Hz gerando sua onda quadrada, onda2, como também foi retirado por filtro o sinal da F2=18Hz gerando sua onda quadrada, onda 3, e na onda 4 é a onda quadrada do sinal (F1+F2). Por pulso de ondas formando os degraus. A função correspondente a uma onda triangular: F(t) = (4/pi)*((sin(2*pi*f*t))-((1/9)*( sin(3*2*pi*f*t))+((1/25)* (sin(5*2*pi*f*t))))) Foi implementada para as frequências de F1=6Hz e F2= 18Hz, e resultou nos graficos da Figura 13, Abaixo. Com as demonstrações anteriores pudemos desenvolver técnicas matemáticas para análise de sinais e sua implementação em ambiente computacional, de forma a tratar os sinais obtendo com as transformações novos parâmetros para serem analisados. Transformando do domínio do tempo para o de frequência e vice-versa de acordo com os dados almejados. No domínio do tempo precisa-se para a análise do sinal periódico, definir explicitamente a função e os parâmetros que a caracterizam. No exemplo tivemos, três parâmetros característicos (A, T, ϕ ) e para o caso de sinal composto de n frequências, são 3n parâmetros além da função. A= amplitude T=1/f= período ϕ =fase inicial, considerada 0º ( Zero Grau) no nosso exercício. Trabalhando no domínio da frequência, esse sinal passa a ser representado apenas pelos seus parâmetros, subentendendo a função temporal escolhida como referência na decomposição. X( f ) [ A, f , ϕ ]. Já se encontrando a função periódica de referência, implícita no domínio da frequência, a caracterização do sinal decomposto em termos dessa referência, necessitou-se apenas dos parâmetros resultantes da decomposição. Assim a análise pela série de Fourier, no domínio da frequência, para sinais periódicos, resume-se a determinar os valores dos coeficientes A e B da série, uma vez que se conhece o período T da função de referência. Considerando-se que as funções de cosseno e de seno são ortogonais, a decomposição de Fourier é vista como uma operação de projeção em base de sinais ortogonais. A implementação das formas de onda, deu-se através do programa Matlab, usando os códigos abaixo. Nome do arquivo Excell, EdAS2015JAP, que é chamado pelo aplicativo para entrada dos dados iniciais. %UNESP - UNIRV - MINTER 2015. %Programa de apresentação final de Análise de Sinais. %Profº João Antônio Pereira. % Aluno Edsel Freitas Portilho. %Os objetivos desde trabalho é relatar o desenvolvimento e implementação %de um aplicativo que possibilite a simulação de diferentes tipos %de sinais, senoidais, proporcionar a soma de senos, %função porta e função impulso) %plotar os gráficos e avaliar o comportamento dos sinais em tempo %plotar os gráficos e avaliar o comportamento dos sinais em frequência %ler um arquivo com dados experimentais e processar os dados. %1) Introdução e plotagem de dois sinais senoidais e sua soma %transferindo dados do Excell, para o mathlab. filename = 'EdAS2015JAP';%Nome do arquivo Excell a=xlsread(filename); f1=a(:,1);%pegando a coluna um Frequencia 1. A1=a(:,2);%pegando a coluna 2 Amplitude 1. T1=1/f1;%calculo do período1 f2=a(:,3);%pegando a coluna 3 Frequencia 2. A2=a(:,4);%pegando a coluna da amplitude 2. T2=1/f2;%calculo do período1 fs=a(:,5);%pegando a coluna 5 Frequencia deamostragem. Tau=a(:,6);%pegando a coluna 6 do Táu. Nptos=a(:,7); % pegando o numero de pontos do período amostrado. tau=Tau/10; Ts = 1/fs; % periodo de amostragem t = 0:Ts:1-Ts; % intervalo de amostragem n = length(t); % tamanho do vetor intervalo de amostragem x1 = A1*sin(2*pi*f1*t);% senoide da frequencia 1 x2 = A2*sin(2*pi*f2*t);% senoide da frequencia 1 x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);% soma das duas ondas senoides xr = 1*randn(size(t));% gerando ruído randomico com amplitude 1 xrt = (x + xr); xr1 = (x1 + xr); xr2 = (x2 + xr); xrt12 = (xr1+xr2); xr12 = (xrt-xrt12); AA= (x1+x2+xr) % Títulos dos gráficos. tit1 = strcat('Onda senoidal (', int2str(f1),'Hz)') tit2 = strcat('Onda senoidal (', int2str(f2),'Hz)') tit3 = strcat('Onda senoidal (', int2str(f1),'Hz + ',int2str(f2),'Hz)') tit4 = strcat('Onda sinal de Ruído') tit5 = strcat('Onda Resultante (', int2str(f1),'Hz + ',int2str(f2),'Hz)','+ Ruído') tit6 = strcat('Onda Resultante ((', int2str(f1),'Hz + Ruído ) + (',int2str(f2),'Hz','+ Ruído))') tit7 = strcat('Onda resultante ((', int2str(f1),'Hz + Ruído ) + (',int2str(f2),'Hz+ Ruído))-((', int2str(f1),'Hz + ',int2str(f2),'Hz )','+ Ruído))') %plotando os graficos das duas ondas e da soma figure(1) subplot(3,1,1) plot(t,x1),title(tit1),grid ylabel('y1(t)') subplot(3,1,2) plot(t,x2,'r'),title(tit2),grid ylabel('y2(t)') subplot(3,1,3) plot(t,x),title(tit3),grid ylabel('y1(t)+y2(t)') xlabel('Tempo (s) Figura 2') % plotando o sinal Soma das ondas, ruído e sinal com ruído figure(2) subplot(3,1,1) plot(t,x),title(tit3),grid ylabel('y1(t)+y2(t)') subplot(3,1,2) plot(t,xr,'r'),title(tit4),grid ylabel('y0(t)') subplot(3,1,3) plot(t,xrt),title(tit5),grid ylabel('y0(t)+y1(t)+y2(t)') xlabel('Tempo (s) Figura 3') % plotando o sinal das anteriores em uma figura. figure(3) subplot(5,1,1) plot(t,x1,'r'),title(tit1),grid ylabel('y(t)') subplot(5,1,2) plot(t,x2,'r'),title(tit2),grid ylabel('y(t)') subplot(5,1,3) plot(t,x),title(tit3),grid ylabel('y(t)') subplot(5,1,4) plot(t,xr,'r'),title(tit4),grid ylabel('y(t)') subplot(5,1,5) plot(t,xrt,'r'),title(tit5),grid ylabel('y(t)') xlabel('Tempo(s) Figura 4') figure(4) subplot(3,1,1) plot(t,xrt,'r'),title(tit5),grid ylabel('y(t)') subplot(3,1,2) plot(t,xrt12,'r'),title(tit6),grid ylabel('y(t)') subplot(3,1,3) plot(t,xr12,'r'),title(tit7),grid ylabel('y(t)') xlabel('Tempo (s) Figura 5') % Iniciando o trabalho com porta %processaPorta(amplitude,tau,numero_pontos,f_amostragem);amplitude = AA; frequencia = A1+A2; numero_pontos = Nptos; f_amostragem = fs; pAmostragem=1/f_amostragem; funcao=AA numeroPontos = Nptos %função retorno processando porta % Explanação Detalhada %nPAmostragem=- numero_Pontos*pAmostragem:pAmostragem:numero_Pontos*pAmostragem- pAmostragem; nPAmostragem = (-Nptos*pAmostragem):pAmostragem:(Nptos*pAmostragem- pAmostragem); %funcao = amplitude*rectpuls(nPAmostragem,tau); %tamanho=length(funcao); %result = fft(funcao,tamanho); tamanho=length(AA) result = fft(AA,tamanho); Ck= abs(result)/(tamanho/2); frequencia =(0:(tamanho/2-1))*(f_amostragem/tamanho); figure(5) subplot(2,1,1) plot(t,AA,'r') title('Sinal no Domínio do Tempo') ylabel('Amplitude') xlabel('Tempo [s]') grid subplot(2,1,2) plot(frequencia,Ck(1:(tamanho/2))),grid title('Transformada Rapida de Fourier [FFT]') ylabel('Amplitude') xlabel('Frequência [Hz] Figura 6'), %% Transf. Fourier % Plota o módulo da transformada de fourier Y = fft(xrt/250); figure(6) plot(abs(Y)); title('Primeira iteração da FFT') ylabel('Amplitude') xlabel('Frequência [Hz] Figura 7') grid % retorna onda triangular. %processaOndaTriangular( amplitude,frequencia,numeroPontos,fAmostragem ) numeroPontos = Nptos; numero_pontos = Nptos; f_amostragem = fs; pAmostragem=1/fs; frequencia = fs/20; amplitude = length(x); funcao=x angulo=2*pi*frequencia; %pAmostragem=1/fAmostragem; nPAmostragem=(0:pAmostragem:((numeroPontos*pAmostragem)-pAmostragem)); AnP=angulo*nPAmostragem, funcao=amplitude*sawtooth(AnP)/50; tamanho=length(x); result = fft(funcao,tamanho); Ck= (abs(result)/(tamanho/2)); frequencia =(0:(tamanho/2-1))*(f_amostragem/tamanho); figure(7) subplot(2,1,1); plot(nPAmostragem,funcao,'r'); title('Sinal dente de serra no Domínio do Tempo'); ylabel('Amplitude'); xlabel('Tempo [s]'); grid on; subplot(2,1,2),plot(frequencia,Ck(1:(tamanho/2))); title('Transformada Rapida de Fourier [FFT]'); ylabel('Amplitude'); xlabel('Frequência [Hz] Figura 8') grid on %Espectro da frequencia N = length(x); % numero de pontos da fft w = -fs/2:fs/2-1; % intervalo de frequência centralizado 1 Yshift = fftshift(Y*250); % plota a transformada normalizada em troncos figure(8) plot(w,2*abs(Yshift)/N); title('FFT centralizada') ylabel('Amplitude') xlabel('Frequência (Hz) Figura 9') grid %% CRIANDO UM FILTRO DIGITAL fil1 = [zeros(1,N/2-f1),ones(1,1),zeros(1,N/2-1+f1)]; fil2 = [zeros(1,N/2+f1),ones(1,1),zeros(1,N/2-1-f1)]; fil3 = [zeros(1,N/2-f2),ones(1,1),zeros(1,N/2-1+f2)]; fil4 = [zeros(1,N/2+f2),ones(1,1),zeros(1,N/2-1-f2)]; fil = fil1+fil2+fil3+fil4; figure(9) plot(w,2*abs(Yshift)/N,w,2*fil,'-r') grid xlabel('Frequência (Hz) Figura 10') ylabel('Amplitude') title('Faixa de Corte do Filtro') axis([-80 80 0 1.1]) legend('Espectro de Frequência','Frequência de Corte') %% APLICANDO O FILTRO DIGITAL E A TRANSFORMADA INVERSA DE FOURIER Yf = fil.*Yshift; yf = ifft(fftshift(Yf)); figure(10) subplot(3,1,1) plot(t,xrt),title('Sinal com Ruído'),grid ylabel('y(t)') subplot(3,1,2) plot(t,real(yf)),title('Sinal após aplicação do filtro'),grid ylabel('y(t)') subplot(3,1,3) plot(t,x),title('Sinal Original'),grid ylabel('y(t)') xlabel('Tempo (s) Figura 11') %% Processando a onda Quadrada. freqAmostragem = fs;%input('digite a frequência de amostragem: '); periodoAmostragem = 1/freqAmostragem; %determina o passo do tempo tempo = 0:periodoAmostragem:1-periodoAmostragem; %determina o intervalo de tempo tamanho = length(tempo); %tamanho do vetor freq1 = f1;%input('digite a frequência 1: '); freq2 = f2;%input('digite a frequência 2: '); freqx = asin(x);%input('digite a frequência 2: '); amplitude1 =A1;% input('digite a amplitude 1: '); amplitude2 =A2;% input('digite a amplitude 2: '); %amplitudex =A1+A2;% input('digite a amplitude soma x: '); fase1 = 0;% input('digite a fase do sinal 1 em graus: '); faseRadianos1 = (fase1*pi)/180; quadrada1 = amplitude1*square(2*pi*freq1*tempo+faseRadianos1); titulo1 = strcat('Onda quadrada (', int2str(freq1),'Hz)'); quadrada2 = amplitude1*square(2*pi*freq2*tempo+faseRadianos1); titulo2 = strcat('Onda quadrada (', int2str(freq2),'Hz)'); %BB=(2*pi*freqx*tempo+faseRadianos1); quadradax = quadrada1+quadrada2; titulox = strcat('Onda quadrada (', int2str(freq1),'Hz) + ', int2str(freq2),'Hz)'); %% figure(11); subplot(4,1,1) plot(t,x,'r'),title(tit3),grid ylabel('y(t)') subplot(4,1,2) stem(tempo,quadrada1); title(titulo1); ylabel('amplitude'); subplot(4,1,3) stem(tempo,quadrada2); title(titulo2); ylabel('amplitude'); subplot(4,1,4) stem(tempo,quadradax); title(titulox); ylabel('amplitude'); xlabel('tempo(segundos) Figura12'); %processaOndaTriangular(amplitude,frequencia,numero_pontos,f_amostrage m); %F(t) = (4/pi)*((sin(2*pi*f*t))-((1/9)*( sin(3*2*pi*f*t))+((1/25)* (sin(5*2*pi*f*t))))) w1=2*pi*6*t w3=6*pi*6*t w5=5*2*pi*6*t FTriant=(4/pi)*((sin(w1))-(1/9)*(sin(w3))+(1/25)*(sin(w5))) wa1=2*pi*18*t wa3=6*pi*18*t wa5=5*2*pi*18*t figure(12); tit8 = strcat('Onda resultante Triangular F1=6[Hz].)') tit9 = strcat('Onda resultante Triangular F2=18[Hz].)') tit10 = strcat('Ondaresultante Triangular F1=[6Hz] = F2=18[Hz].)') subplot(4,1,1) plot(t,x1,'r'),title(tit1),grid ylabel('y(t)') subplot(4,1,2) stem(tempo,FTriant); title(tit8); ylabel('amplitude'); subplot(4,1,3) plot(t,x2,'r'),title(tit2),grid ylabel('y(t)') subplot(4,1,4) stem(tempo,FTrianta); title(tit8); ylabel('amplitude'); xlabel('tempo(segundos) Figura13');
Compartilhar