# Exemplo 5.1 N = 1000; t = linspace(0,1-1/N,N); f = 0.5*sin(2*pi*96*t)+0.5*sin(2*pi*235*t); g = [sin(2*pi*96*t(1:N/2)) sin(2*pi*235*t(N/2+1:N)) ]; figure(1); plot(0:N/2,abs(fft(f)(1:N/2+1))); axis([0 500 0 300]); title("Espectro da funcao f"); figure(2); plot(0:N/2,abs(fft(g)(1:N/2+1))); axis([0 500 0 300]); title("Espectro da funcao g"); # Gráficos de f e g no exemplo 5.1 figure(3); plot(f); title("funcao f (soma de 2 senoides)"); figure(4); plot(g); title("funcao g (concatenacao de 2 senoides)"); # Exemplo 5.2 close all; N = 1000; t = linspace(0,1-1/N,N); f = 0.5*sin(2*pi*96*t)+0.5*sin(2*pi*235*t); w = zeros(1,N); w(100:149) = ones(1,50); ftil = w.*f; figure(1); plot(0:N/2,abs(fft(ftil)(1:N/2+1))); axis([0 500 0 14]); title("Espectro do sinal multiplicado pela janela"); figure(2); plot(0:25,abs(fft(ftil(100:149))(1:26))); axis([0 25 0 14]); title("Espectro do sinal recortado"); # Exemplo 5.3 close all; N = 1000; w = zeros(1,N); w(100:149) = ones(1,50); figure(3); plot(-N/2+1:N/2,abs(fftshift(fft(w)))); axis([-N/2+1 N/2]); title("Espectro da janela (retangular) do exemplo 5.2"); # Exemplo 5.4 N = 1000; M = [3 10 100 250]; for j=1:length(M) w = [ones(1,M(j)) zeros(1,N-M(j))]; figure(j); plot(-N/2+1:N/2,abs(fftshift(fft(w)))); axis([-N/2+1 N/2]); title(sprintf("Espectro da janela retangular com M=%d",M(j))); endfor # Exemplo 5.5 close all; N = 1000; t = linspace(0,1-1/N,N); g = [sin(2*pi*96*t(1:N/2)) sin(2*pi*235*t(N/2+1:N)) ]; M=[20 50 100 200]; # saltos de 60% do valor da janela O=0.6*M; # a figura 4 é um exemplo de que mesmo diminuindo o salto # não se ganha muita informação temporal sobre o instante # da transição O(4) = 10; for j=1:length(M) S=[]; for k=0:(N-M(j))/O(j) inicio = k*O(j)+1; fim = k*O(j)+M(j); S(1:M(j)/2,k+1) = abs(fft(g(inicio:fim))(M(j)/2:-1:1))'; endfor S = S/max(max(S)); figure(j); # criamos uma versão de S redimensionada em 100x100 # para facilitar a visualização T = 100; imshow(S(round(linspace(1,rows(S),T)),round(linspace(1,columns(S),T)))); title(sprintf("Espectrograma com M=%d, m=%d",M(j),O(j))); endfor # Exemplo 5.6 close all; N = 1000; t = linspace(0,1-1/N,N); omega = 150+50*cos(2*pi*t); f = sin(2*pi*111*t)+0.5*sin(2*pi*123*t)+0.5*sin(2*pi*omega.*t); figure(1); plot(0:N/2,log(1+abs(fft(f)(1:N/2+1)))); axis([0 N/2]); title("Espectro do sinal com 3 senoides, 1 com frequencia variavel"); # # # M=[200 100 50 20]; O=[20 60 50 12]; for j=1:length(M) S=[]; for k=0:(N-M(j))/O(j) inicio = k*O(j)+1; fim = k*O(j)+M(j); S(1:M(j)/2,k+1) = abs(fft(f(inicio:fim))(M(j)/2:-1:1))'; endfor figure(j+1); S = S/max(max(S)); # criamos uma versão de S redimensionada em 100x100 # para facilitar a visualização T = 500; imshow(S(round(linspace(1,rows(S),T)),round(linspace(1,columns(S),T)))); title(sprintf("Espectrograma com M=%d, m=%d",M(j),O(j))); endfor # Figura 5.10 e outros exemplos de janelas close all; N=1000; wr = zeros(1,N); wr(100:149) = ones(1,50); figure(1); plot(-2:51,wr(98:151)); axis([-2 51 -0.1 1.1]); title("Janela retangular"); figure(2); plot(linspace(-N/2,N/2,N),abs(fftshift(fft(wr)))); axis([-N/2 N/2]); title("Espectro da janela retangular"); wb = bartlett(50); figure(3); plot(0:49,wb); axis([0 49 -0.1 1.1]); title("Janela Bartlett (triangular)"); figure(4); plot(linspace(-N/2,N/2,50),abs(fftshift(fft(wb)))); axis([-N/2 N/2]); title("Espectro da janela Bartlett (triangular)"); wh = hamming(50); figure(5); plot(0:49,wh); axis([0 49 -0.1 1.1]); title("Janela Hamming"); figure(6); plot(linspace(-N/2,N/2,50),abs(fftshift(fft(wh)))); axis([-N/2 N/2]); title("Espectro da janela Hamming"); wg = gausswin(50); figure(7); plot(0:49,wg); axis([0 49 -0.1 1.1]); title("Janela Gaussiana"); figure(8); plot(linspace(-N/2,N/2,50),abs(fftshift(fft(wg)))); axis([-N/2 N/2]); title("Espectro da janela Gaussiana"); figure(9); plot(linspace(-N/2,N/2,50),wb,";Bartlett;", linspace(-N/2,N/2,50),wh,";Hamming;", linspace(-N/2,N/2,50),wg,";Gaussiana;"); figure(10); plot(linspace(-N/2,N/2,50),abs(fftshift(fft(wb))),";Bartlett;", linspace(-N/2,N/2,50),abs(fftshift(fft(wh))),";Hamming;", linspace(-N/2,N/2,50),abs(fftshift(fft(wg))),";Gaussiana;");