Compose code performing FFT

User: "Aditya Hegde_22173"
Altair Community Member
Updated by Aditya Hegde_22173

1)I have been trying to perform FFT using time domain data. The time domain data that I have is in excel format and with data points up to 100000. Can somebody tell me what is wrong with my code as the FFT I am obtaining here doesn't match with the one which i have performed in other softwares. (code attached below) 

Code:

data= xlsread('pave_25_time_data.xlsx'); 
Time=data(:,1); 
Acc=data(:,2); 

figure(1); 
plot(Time,Acc);  

L= numel(Time); 
Y = fft (Acc); 
P2 = abs (Y/L); 
P1 = P2(1:L/2+1); 
P1(1:end-1) = 2*P1(1:end-1); 
f = (0:(L/2))/2; 
figure(2); 

plot(f,P1); 

 

 

 

Find more posts tagged with

Sort by:
1 - 2 of 21
    User: "João Marabisa"
    Altair Employee
    Updated by João Marabisa

    Hello @Aditya Hegde,

    This could be due to the headers. The easiest way to do it is using:

    image

    I compared the results with Octave and they match:

    image

    Attaching the files that I used.

    User: "Orestis_YB"
    Altair Employee
    Updated by Orestis_YB

    Hello Aditya,

    when creating an fft it's important to take into account sample frequency. As you already have the time data from the xlsx file you can set the sampling frequency as Fs = 1/(mean(diff(Time)); A very useful function when plotting the fft is also freq(). Here you can use it as f = freq( L, Fs, 'onesided') with L being the length of the signal, Fs the sampling frequency and 'onesided' the option to obtain the single side fft frequencies. You can also check this brief how to video Altair Compose: Signal Processing - Fast Fourier Transform . Hope this helps!


    Best regards,
    Orestes.