Solving SDOF system in freq domain using FFT & IFFT

  • Follow


Hello,
So I want to use FFT & IFFT to solve a simple SDOF system (so that i can move on and use a freq domain method to solve more complex dynamic models). I've solved a simple SDOF system with a sin wave forcing function in time domain using ode45 and then was looking to get the same results using freq domain approach using a FFT and IFFT method,
Im aware of the method, transform the input time history 
p(t)-FFT-P(w)
Calculate the response of the SDOF system in the frequency domain using the transfer (frequency response) function
U(w)=H(w)P(w)
Use the inverse FFT to obtain the response of the SDOF system in the time domain
U(w)-IFFT-u(t)

And my code is as follow 

%frequency domain
 
function freqsdof ()
 
m = 2;
k = 10;
c = 0.26;
 
wn = sqrt(k/m);  %nat freq
I = c/(2*m*wn);
 
t = linspace(1,100,10000);
dt = t(1,2) - t(1,1);
% dt = 1;
f = sin(t);
 
ff =  (f/m) ; %load divided by mass
 
Qi = fft((ff)) ;
 
N  = length(f);
fs = 1/(dt);
Q_hertz = ( 0:(N-1) )*fs/N; %Freq in Herz
Q_w = 2*pi*Q_hertz ;        %Cir freq in rads per second
 
 
Qf = Qi(1: ceil(N/2));
 
wQ = Q_w(1: ceil(N/2));
 
 
m = length (Qf);
 

for n = 1:m
    
    
X1(n,1)   = ( ( (wn^2 - wQ(1,n)^2) + (i*2*I*wn*wQ(1,n)) )^-1   *(Qf(1,n)) ); 
 
             %Conjugates of above line 
 X2(n,1) =  ( ( (wn^2 - wQ(1,n)^2) - (i*2*I*wn*wQ(1,n)))^-1 * conj(Qf(1,n)));  
 
end
 

 
x (1:m,1) =  X1(:,1);
x ( ((m+1):(m*2)),1 ) =  X2(:,1);
 
 
x1 = ifft( x );
 
tspan = linspace(1,100,(2*m));
 
figure
  plot ( tspan, real(x1) );
title('Freq domain')
 
 
end


However im not getting the right results, 
I think the problem is where i have to get the complex conjugate of the values.

Can anyone please help! 
Thanks in advance!
0
Reply Michael 6/3/2010 9:46:06 AM


0 Replies
504 Views

(page loaded in 0.522 seconds)

Similiar Articles:













7/21/2012 5:07:00 PM


Reply: