% PRACTICA 2: ANALISIS FRECUENCIAL Y DISEÑO DE FILTROS FIR PASABANDA
% SCRIPT:     filtro_fir_2.M
% DESCRIPCION: 
%     En este script de Matlab se cargan los datos de diversos ensayos realizados 
%     sobre un motor asincrono de 4 kW. Se analizan las variables a_x(t), a_y(t) de 
%     acelerometros colocados en direcciones x e y del motor. Se describen los siguientes 
%     procedimientos: 
%         - Analisis frecuencial de las señales mediante FFT
%         - Diseño de un filtro FIR pasabanda en la zona de frecuencias de los cojinetes
%         - Trazado de la respuesta en frecuencia del filtro FIR diseñado
%         - Filtrado de las señales mediante el filtro FIR
%         - Analisis frecuencial de la señal filtrada mediante FFT
%
% AUTOR
%       Ignacio Diaz Blanco. 
%       Area de Ingenieria de Sistemas y Automatica.
%       Universidad de Oviedo. 
%       Enero 2002

close all;
load dataicann;

% COGEMOS LAS ACELERACIONES DE UNO DE LOS REGISTROS (EJ. FALLO ASIMETRIA)
Registro = 2;
ac = z{Registro}(:,1); 
ax = z{Registro}(:,2); 
ay = z{Registro}(:,3);

N = length(ac);             % Tamaño de la secuencia de datos
fm = 5000;                  % Frecuencia de muestreo
tm = 1/fm;                  % Periodo de muestreo
f = linspace(0,fm,N+1);     % Vector de frecuencias ...
f = f(1:end-1);             % ... el ultimo elemento no entra
t = 0:tm:tm*(N-1);          % Vector de tiempos


% TRANSFORMADA DE FOURIER DE LA SEÑAL
figure; 
soundsc(ax,5000);
plot(f,abs(fft(ax)));     
title('FFT de a_x(t)');
set(gcf,'name','FFT de a_x(t)');
pause;

figure; 
soundsc(ay,5000);
plot(f,abs(fft(ay)));     
title('FFT de a_y(t)');
set(gcf,'name','FFT de a_y(t)');
pause;



% DISEÑO DEL FILTRO PASABANDA

% Obtencion de coeficientes del filtro fir
fc1 = 1500;                  % Frecuencia de corte (Hz)
wc1 = fc1/(fm/2);            % Frecuencia de corte (normalizada 0=0, 1=frec_shannon)
fc2 = 2200;                  % Frecuencia de corte (Hz)
wc2 = fc2/(fm/2);            % Frecuencia de corte (normalizada 0=0, 1=frec_shannon)
b = fir1(250,[wc1 wc2]);     % Coeficientes del fir

% Aplicacion del filtro a la señal
axf = filter(b,1,ax);
ayf = filter(b,1,ay);


% Trazado de la respuesta en frecuencia del filtro fir
figure; 
plot(f,abs(fft(b,N)));  
title('Respuesta en frecuencia del filtro FIR');
set(gcf,'name','Resp. Frecuencia filtro FIR');
pause; 

figure;
soundsc(axf,5000);
plot(t,axf);
title('a_x(t) filtrada con el filtro FIR');
set(gcf,'name','a_x(t) filtrada con el filtro FIR');
pause; 

figure; 
soundsc(ayf,5000);
plot(t,ayf);
title('a_y(t) filtrada con el filtro FIR');
set(gcf,'name','a_y(t) filtrada con el filtro FIR');
pause;

figure;
subplot(211);
plot(f,abs(fft(axf)));
title('FFT de a_x(t) filtrada');
subplot(212);
plot(f,abs(fft(ayf)));
title('FFT de a_y(t) filtrada');
set(gcf,'name','FFT de las señales filtradas');
pause;

