Copyright Dhruv Lamba


clc;
close all;
clear all;

[y,Fs,bits] = auread('bird_chirping2.au');

x = y(:,1);

clear y;
N = length(x);

time = [1:N].*(1/Fs);

han = plot(time,x);
xlab = xlabel('Seconds');
ylab = ylabel('Amplitude');
grid on;
set(han,'LineWidth', 2);
set([xlab, ylab],'FontSize', 24, 'FontName', 'Times');
set(gca,'FontSize',20,'FontName','Times','Fontweight','Bold')

% wavwrite(x,Fs,bits,'test.wav');


[X,f] = centeredFFT(x,Fs);


figure;
han1 = plot(f,abs(X));
axis([-8000,8000,0,max(abs(X))]);
grid on;
xlab1=xlabel('Frequency(Hz)');
ylab1=ylabel('|X[k]|');
set(han1,'LineWidth', 2);
set([xlab1, ylab1],'FontSize', 24, 'FontName', 'Times');
set(gca,'FontSize',20,'FontName','Times','Fontweight','Bold')

% sound(x,Fs,bits);

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %


fc = 2000;
fNorm = fc / ( Fs/2);
[b,a] = butter(10, fNorm, 'low');
x_Low = filtfilt(b, a, x);

figure;
freqz(b,a,bits,Fs/2);
grid on;

% sound(x_Low,Fs,bits);
% wavwrite(x_Low,Fs,bits,'x_Low_.wav');

[X_LOW,f_low] = centeredFFT(x_Low,Fs);


figure;
han2=plot(f_low,abs(X_LOW));
axis([-.8e4,.8e4,0,max(abs(X))]);
grid on;
xlab2=xlabel('Frequency(Hz)');
ylab2=ylabel('|X[k]|)');
set(han2,'LineWidth', 2);
set([xlab2, ylab2],'FontSize', 24, 'FontName', 'Times');
set(gca,'FontSize',20,'FontName','Times','Fontweight','Bold')


figure;
han3=plot(time,x_Low);
grid on;
xlab3=xlabel('Frequency(Hz)');
ylab3=ylabel('|X[k]|)');
set(han3,'LineWidth', 2);
set([xlab3, ylab3],'FontSize', 24, 'FontName', 'Times');
set(gca,'FontSize',20,'FontName','Times','Fontweight','Bold')


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%THIS IS A COOL CUSTOM FFT PLOTTING FUNCTION BY MATHWORKS%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % function [X,freq]=centeredFFT(x,Fs)
% % %this is a custom function that helps in plotting the two-sided spectrum
% % %x is the signal that is to be transformed
% % %Fs is the sampling rate
% % 
% % N=length(x);
% % 
% % %this part of the code generates that frequency axis
% % if mod(N,2)==0
% %     k=-N/2:N/2-1; % N even
% % else
% %     k=-(N-1)/2:(N-1)/2; % N odd
% % end
% % T=N/Fs;
% % freq=k/T;  %the frequency axis
% % 
% % %takes the fft of the signal, and adjusts the amplitude accordingly
% % X=fft(x)/N; % normalize the data
% % X=fftshift(X); %shifts the fft data so that it is centered


Alumni Liaison

Basic linear algebra uncovers and clarifies very important geometry and algebra.

Dr. Paul Garrett