Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

How to use FFTW: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Add "cleanup" tag)
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
[[Category:HowTo]]
== Getting Started ==


[[Category:Learning::HowTo]]
'''Note that this is done on an Ubuntu operating system, on Windows some steps are different.'''


= How to compute FFT using FFTW in Qt =
* '''Step 1''': Download FFTW from http://www.fftw.org/download.html


== Getting Start ==
* '''Step 2''': Extract and Configure it (my path: /home/jafarabadi/Documents/fftw-3.3.4)


'''Note that I do this in Ubuntu operating system, in Windows some steps are different.'''
<pre>
cd /home/jafarabadi/Documents/fftw-3.3.4
./configure
make
make install
</pre>
 
* Alternatively install fftw through your package manager (e.g. pacman -Sy fftw)
 
* '''Step 3''': Add library to project: first open [your_project_name].pro file in Qt Creator and add this line:
 
<pre>
LIBS += -lfftw3
</pre>


* Step1: Download FFTW ([[http://www.fftw.org/download.html]])
* '''Step 4''': Example


* Step2: Extract and Configure it (my path: /home/jafarabadi/Documents/fftw-3.3.4)
<code>
<code>cd /home/jafarabadi/Documents/fftw-3.3.4
#include <fftw3.h>
chmod ''x configure
int N;
./configure
make
make install</code>


* Step 3: Add library to project: first open [your_project_name].pro file in Qt Creator and add this line:
// Set N to the number of complex elements in the input array
<code>LIBS''= -lfftw3<code>


* Step 4: Example
fftw_complex *in, *out;
</code>#include <fftw3.h></code>
in = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * N);
<code>int N;
out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * N);


fftw_complex *in, '''out;
// Initialize 'in' with N complex entries
in = (fftw_complex''') fftw_malloc(sizeof(fftw_complex)'''N);
out = (fftw_complex''') fftw_malloc(sizeof(fftw_complex)*N);


fftw_plan my_plan;
fftw_plan my_plan;
my_plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
my_plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(my_plan);
fftw_execute(my_plan);
// Use 'out' for something


fftw_destroy_plan(my_plan);
fftw_destroy_plan(my_plan);
Line 37: Line 47:
fftw_free(out);
fftw_free(out);


// A short tutorial: http://www2.math.uu.se/~figueras/fftw_tutorial/text/fftw_tutorial.pdf</code>
// A short tutorial:
// http://www2.math.uu.se/~figueras/Other/text/fftw_tutorial.pdf
</code>

Latest revision as of 07:58, 10 March 2017

Getting Started

Note that this is done on an Ubuntu operating system, on Windows some steps are different.

  • Step 2: Extract and Configure it (my path: /home/jafarabadi/Documents/fftw-3.3.4)
cd /home/jafarabadi/Documents/fftw-3.3.4
./configure
make
make install
  • Alternatively install fftw through your package manager (e.g. pacman -Sy fftw)
  • Step 3: Add library to project: first open [your_project_name].pro file in Qt Creator and add this line:
LIBS += -lfftw3
  • Step 4: Example
#include <fftw3.h>
int N;

// Set N to the number of complex elements in the input array

fftw_complex *in, *out;
in = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * N);
out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * N);

// Initialize 'in' with N complex entries

fftw_plan my_plan;
my_plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(my_plan);

// Use 'out' for something

fftw_destroy_plan(my_plan);
fftw_free(in);
fftw_free(out);

// A short tutorial:
// http://www2.math.uu.se/~figueras/Other/text/fftw_tutorial.pdf