Buscar

Edsel AnáliseProcSinais MINTER

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');

Continue navegando