3

I have a seismic accelerogram. I tried to apply the Fourier Transform to interpolate function, but dosn't work. So, i applied the Fourier[signal,FourierParameters->{-1,-1}], when i Plot (ListLinePlot)

Abs[Fourier[signal,FourierParameters->{-1,-1}]]

Signal:

https://www.dropbox.com/s/tkag1h1tkbb34p8/elcentro.dat?dl=0

I obtained a Incorrect graphics (no sense ).

Signal

Fourier Transform Obtainded By Fourier[]

Can I solve It?

thanks in advance

plus91
  • 440
  • 4
  • 14
  • I haven't looked at your data, but I think it must be 2d, that is, a list of lists. – mikado Oct 16 '16 at 11:02
  • Have you got time mixed in with the data? The input to Fourier should be a list of the data without the time coordinate. – Hugh Oct 16 '16 at 11:02
  • @hugh so I must pass to "Fourier[]" only time coloumn? If yes, how plot The diagram frequency/Abs[FT]? Thx – plus91 Oct 16 '16 at 11:07
  • @mikado I must verify but i think it is a list with two coloumn (time and acc). I import it by signal=Import["elcentro.dat"] and Then plot it by " ListLinePlot[signal]. Thx – plus91 Oct 16 '16 at 11:10
  • Just use the ordinates. I put some information on using Fourier here. – Hugh Oct 16 '16 at 11:12
  • @Hugh thanks ;) – plus91 Oct 16 '16 at 20:13

1 Answers1

2

Like already pointed out in the comments: only use the ordinate values.

fData=Abs[Fourier[data[[All,2]],FourierParameters->{-1,-1}]]^2;
fData=fData[[1;;Floor[Length[fData]/2]]];

With a little bit more code, we can visualize it very well:

SR=(Length[data]/data[[All,1]][[-1]]);
Frequencies=(Range[1,Length[fData]]-1)*SR/Length[data];
ListLinePlot[Transpose[{Frequencies,fData}],PlotRange->All,Frame->True,FrameLabel->{Style["Frequency",16],Style["Powerspectrum",16]},ImageSize->1200,AspectRatio->1/8]

The Powerspectrum

Julien Kluge
  • 5,335
  • 1
  • 17
  • 29