%Developed in the UTFPR / First semester of 2008.
%Discrete Signals and Systems - Professor Richard Demo Souza
%Theo Harushi Franco
%Elias Cavalet
%--------------------------------------------------------------------------
clear all
close all
clc
%Constants
file_1 = '0500Hz_11.025kHz_16Bit.wav' %name of the first amostrated file
analysis_time = 10; %amount of time in seconds taken from files for analisys
filter_order = 12
cutoff_freq = 500
%Storing data from the files
[data_1, FS_1, NBITS_1] = wavread(file_1); clear file_1;
FS_1
%Aranging data
if analysis_time <= 0 | analysis_time > length(data_1)/FS_1
analysis_time = length(data_1)/FS_1
else
analysis_time
end
data_1 = data_1(1:FS_1*analysis_time); %getting data in the amount of time selected
data_1 = data_1*(1/max(abs(data_1))); %normalizing amplitude to maximum of 1
original_data_1 = data_1;
fft_data_1= fftshift((abs(fft(data_1))));
%rectangular: low-dynamic-range
b=fir1(filter_order,2*cutoff_freq/FS_1,boxcar(filter_order+1));
[H,w]=freqz(b,1,FS_1*analysis_time);
db1=20*log10(abs(H));
rectwin_data_1 = filter(b,1,data_1);
%hamming: narrowband applications
b=fir1(filter_order,2*cutoff_freq/FS_1,hamming(filter_order+1));
[H,w]=freqz(b,1,FS_1*analysis_time);
db2=20*log10(abs(H));
hamming_data_1 = filter(b,1,data_1);
% %hann: narrowband applications
% b=fir1(filter_order,2*cutoff_freq/FS_1,hann(filter_order+1));
% [H,w]=freqz(b,1,FS_1*analysis_time);
% db3=20*log10(abs(H));
% hann_data_1 = filter(b,1,data_1);
%flattop: high-dynamic-range (only available for MATLAB7 or newer)
b=fir1(filter_order,2*cutoff_freq/FS_1,flattopwin(filter_order+1));
[H,w]=freqz(b,1,FS_1*analysis_time);
db3=20*log10(abs(H));
flattopwin_data_1 = filter(b,1,data_1);
%Writing wav files
wavwrite(original_data_1,FS_1,NBITS_1,'sample_1.wav');
wavwrite(rectwin_data_1,FS_1,NBITS_1,'rectwin_1.wav');
wavwrite(hamming_data_1,FS_1,NBITS_1,'hamming_1.wav');
wavwrite(flattopwin_data_1,FS_1,NBITS_1,'flattop_1.wav');
%Plotting
figure;
subplot(2,2,1);
plot(linspace(-FS_1/2,FS_1/2,analysis_time*FS_1),20*log10(fft_data_1));
title('Original Signal 1');
xlabel('Freq (Hz)')
ylabel('dB')
grid
axis([-FS_1/2,FS_1/2,0,20*log10(max(abs(fft_data_1)))])
subplot(2,2,2);
plot(linspace(-FS_1/2,FS_1/2,analysis_time*FS_1),20*log10(fftshift(abs(fft(rectwin_data_1)))));
title('Rectangular Window 1');
xlabel('Freq (Hz)')
ylabel('dB')
grid
axis([-FS_1/2,FS_1/2,0,20*log10(max(abs(fft_data_1)))])
subplot(2,2,3);
plot(linspace(-FS_1/2,FS_1/2,analysis_time*FS_1),20*log10(fftshift(abs(fft(hamming_data_1)))));
title('Hamming Window 1');
xlabel('Freq (Hz)')
ylabel('dB')
grid
axis([-FS_1/2,FS_1/2,0,20*log10(max(abs(fft_data_1)))])
subplot(2,2,4);
plot(linspace(-FS_1/2,FS_1/2,analysis_time*FS_1),20*log10(fftshift(abs(fft(flattopwin_data_1)))));
title('Flat top Window 1');
xlabel('Freq (Hz)')
ylabel('dB')
grid
axis([-FS_1/2,FS_1/2,0,20*log10(max(abs(fft_data_1)))])
figure;
plot(w,db1,'b',w,db2,'r',w,db3,'g');
title('WINDOWS: Rectangular(blue), Hamming(red), Flat top(green)');
xlabel('rad')
ylabel('dB')
grid