aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md69
1 files changed, 69 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6e8932b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,69 @@
+#Task solution - fast Fourier transform in fortran (using fftw3)#
+This repository contains the realization of the [second task](http://home.agh.edu.pl/~macwozni/fort/zadanie2.pdf) of the fortran programming language course at AGH in Cracov.
+
+##Directory structure##
+
+ Makefile
+ README.md
+ make_results.sh
+ template.gnuplot
+ src/
+ fourier.F90
+ f1_dft.gnuplot
+ f1_original.gnuplot
+ f2_dft.gnuplot
+ f2_filtered.gnuplot
+ f2_original.gnuplot
+ res/
+ f1_dft.txt
+ f1_original.txt
+ f2_dft.txt
+ f2_filtered.txt
+ f2_original.txt
+ f1_dft.png
+ f1_original.png
+ f2_dft.png
+ f2_filtered.png
+ f2_original.png
+
+###Makefile###
+This file contains recipes for building the fortran program and using to generate plots.
+
+###src/###
+This directory contains the fortran source of the project, namely `fourier.f90` and gnuplot scripts for generating png plots.
+
+###res/###
+This directory contains relevant plots of signals and frequency spectrums as required for the task.
+
+##Building##
+As a prerequisite, fftw3, make and a fortran compiler, either gfortran or ifort, are required (didn't want to support proprietary compiler :c but had to). It is assumed, that include files for fftw3 are installed under `/usr/include`.
+Run:
+
+ $ make
+to build the program executable `fourier`.
+The makefile checks which one of the 2 compilers is present and uses it. Alternatively, one can specify fortran compiler explicitly, e.g.:
+
+ $ make FC=gfortran
+or:
+
+ $ make FC=ifort
+
+##Running##
+The executable is `fourier`. It's mandatory first argument is name of the function to work with - 'f1' or 'f2'. If there're no other arguments - program prints datapoints for plotting the original function. If second argument is 'dft' - program prints datapoints of function's frequency spectrum as obtained from discrete fourier transform. If second argument is 'filtered' - program prints datapoints of filtered function (with frequency components of low values removed).
+
+ $ ./fourier f2 filtered
+ 0.0000000000000000 0.99737967443382569
+ 1.5259021896696422E-005 0.99737363952277114
+ 3.0518043793392844E-005 0.99736759544407216
+ 4.5777065690089265E-005 0.99736154219778428
+ ⋮
+ 0.99996948195620661 0.99739772416056849
+ 0.99998474097810330 0.99739171675277982
+ 1.0000000000000000 0.99738570017718042
+
+Text files and plots in `res/` can be regenerated by issuing
+
+ $ make pngs
+
+from the main project directory.
+