Fourier transform to obtain a power spectrum using Flanagan
Source code name: "flanagan_fourier_transform.py"
Programming language: Python
Topic: Linear Algebra/Matrices
DMelt Version 2.3. Last modified: 10/29/1972. License: Pro
https://datamelt.org/code/cache/flanagan_fourier_transform_444.py
To run this script using the DMelt IDE, copy the above URL link to the menu [File]→[Read script from URL] of the DMelt IDE.



#  Uses external Michael Thomas Flanagan's Java Scientific Library
#  https://www.ee.ucl.ac.uk/~mflanaga/java/
#  illustrating the use of FourierTransform to obtain a Power Spectrum.

from flanagan.plot import PlotGraph

from jhplot import Web
from flanagan.math import FourierTransform 
from java.lang import Math

url="http://www.ee.ucl.ac.uk/~mflanaga/java/flanagan.jar"
print "Loading ",url
print Web.load(url)


nPoints = 256 
amplitude1 = 1.0
amplitude2 = 2.0
pointsPerCycle = 200;
deltaT = 1.0/pointsPerCycle;

ydata=[]
tdata=[]
#  Create wave form
for i in range(nPoints):
  ydata.append(amplitude1*Math.sin(2.0*Math.PI*i/pointsPerCycle)+ amplitude2*Math.sin(10.0*Math.PI*i/pointsPerCycle));
  tdata.append(i*deltaT)

# Plot original data
pg0 = PlotGraph(tdata, ydata);
pg0.setGraphTitle("y = sin(2.pi.t) + 2sin(10.pi.t)");
pg0.setXaxisLegend("time");
pg0.setXaxisUnitsName("s");
pg0.setXaxisLegend("y");
pg0.plot()


ft0 = FourierTransform(ydata);
ft0.setDeltaT(deltaT);
powerSpectrum = ft0.powerSpectrum();

# Plot power spectrum
ft0.plotPowerSpectrum();

#  Obtain the transformed data
transformedData = ft0.getTransformedDataAsAlternate();

# Inverse transform the transformed data
ft1 = FourierTransform();
ft1.setFftData(transformedData);
ft1.inverse();

# Obtain the inverse transformed data
inverseTransform = ft1.getTransformedDataAsAlternate();

# Arrange real parts for plotting
newYdata = []
k=0;
for i in range(nPoints):
      newYdata.append(inverseTransform[k]);
      k += 2;

# Plot inverse transformed data
pg1 = PlotGraph(tdata, newYdata);
pg1.setGraphTitle("y = sin(2.pi.t) + 2sin(10.pi.t) fft transformed and then inverse transformed");
pg1.setXaxisLegend("time");
pg1.setXaxisUnitsName("s");
pg1.setXaxisLegend("y");
pg1.plot();




You see the box below because you did not login.