clear
clc
home
load ACCfilter
load ElapsedTime
%definitions
Fs = 32;
t = ElapsedTime; % sampling range
yno = ACCfilter;
[B,A] = butter(5,0.5/(Fs/2),'high');
y = filter(B,A,yno);
%plot in time domain
subplot(2, 1, 1); %
plot(t, y,'r'); grid on % plot with grid
title('Acceleration vs Time')
xlabel('Time (s)'); % time expressed in seconds
hold on
plot(t,yno,'g')
%FFT section
Y = fft(y); % compute Fourier transform enter
n = length(y); %
Amp = abs(Y )/n; % absolute value and normalize
%if n is even the fft will be symmetric
%the first n/2 + 1 points will be unique and the rest are symmetrically
%redundant. Point 1 is the DC component. Point n/2 +1 is the nyquist
%component
%1 2 3 4 5 6 7 8
%4 3 2 1 0 -1 -2 -3
% if n is odd the nyquist component is not evaluated. The number of unique
% points is (n+1)/2
%1 2 3 4 5 6 7 8 9
%5 4 3 2 1 -1 -2 -3 -4
%create the frequency axis
NumUniquePts=ceil((n+1)/2);
% the positive frequencies
freq=(0:NumUniquePts-1)*Fs/(n-1);
%mirror the positive frequencies but make them negative then adjust some things
%to look right
freq2= -1*freq(end:-1:1);
if mod (n,2)==0
freq2(1)=[];
end
freq3=[freq, freq2];
freq3';
size(freq3);
if mod(n,2)==1
freq3(n+1)=[];
end
if mod(n,2)==0
freq3(n)=[];
end
%store freq3 in a column
freq3c = freq3';
%plot acceleration in frequency domain
subplot(2, 1, 2);
plot(freq, Amp(1 : NumUniquePts),'b.'); grid on % plot amplitude spectrum enter
xlabel('Frequency (Hz)'); % 1 Herz = number of cycles per second enter
ylabel('Acceleration Amplitude'); % amplitude as function of frequency enter
%Omega Arithmetic to convert acceleration to velocity
%uses complete frequency vector from above
V=Y./(2*pi*freq3c*1i);
%result=[freq3',Y',G'] %use this line to look at freq3, Y, and G next to each other
% Get rid of infinities resulting from divisions by zero to prepare for
% ifft
V(1)=[1];
if mod(n,2)==0
V(n)=[1];
end
%go back to time domain with the velocity
inversedVno=ifft(V);
[B,A] = butter(5,0.5/(Fs/2),'high');
inversedV = filter(B,A,inversedVno);
figure
plot(t,real(inversedV),'b')
hold on
title('Velocity vs Time'); % amplitude as function of time
xlabel('Time (s)'); % time expressed in seconds
ylabel('FFT Velocity');
% FsdirV=100; %sampling rate
% dtdirV = 1/Fs; %
% etdirV = 3; % end of the interval
% tdirV = 0 : dt : et; % sampling range
% ydirV = -cos(4*pi*t)/(2*pi);% define the signal
% plot(t,ydirV,'g')
%Omega Arithmetic to convert velocity to displacement
D=V./(2*pi*freq3c*1i);
% Get rid of infinities resulting from divisions by zero to prepare for
% ifft
D(1)=[1];
if mod(n,2)==0
D(n)=[1];
end
%go back to time domain with the displacement
inversedDno=ifft(D);
[B,A] = butter(5,0.5/(Fs/2),'high');
inversedD = filter(B,A,inversedDno);