Difference between revisions of "How to use FFTW"

From Qt Wiki
Jump to: navigation, search
 
 
(7 intermediate revisions by 5 users not shown)
Line 1: Line 1:
=How to compute <span class="caps">FFT</span> using <span class="caps">FFTW</span> in Qt=
+
[[Category:HowTo]]
 +
== Getting Started ==
  
==Getting Start==
+
'''Note that this is done on an Ubuntu operating system, on Windows some steps are different.'''
  
'''Note that I do this in Ubuntu operating system, in Windows some steps are different.'''
+
* '''Step 1''': Download FFTW from http://www.fftw.org/download.html
  
* Step1: Download <span class="caps">FFTW</span> ([[http:www.fftw.orgdownload.html]])
+
* '''Step 2''': Extract and Configure it (my path: /home/jafarabadi/Documents/fftw-3.3.4)
  
* Step2: Extract and Configure it (my path: /home/jafarabadi/Documents/fftw-3.3.4)<br />
+
<pre>
 +
cd /home/jafarabadi/Documents/fftw-3.3.4
 +
./configure
 +
make
 +
make install
 +
</pre>
  
* Step 3: Add library to project: first open [your_project_name].pro file in Qt Creator and add this line:<br />
+
* Alternatively install fftw through your package manager (e.g. pacman -Sy fftw)
  
* Step 4: Example<br />
+
* '''Step 3''': Add library to project: first open [your_project_name].pro file in Qt Creator and add this line:
  
* Step 5: Enjoy <span class="smiley">:)</span> [Written by Ali Jafarabdi :: Qt is an awesome programming language.]
+
<pre>
 +
LIBS += -lfftw3
 +
</pre>
  
===Categories:===
+
* '''Step 4''': Example
  
* [[:Category:Learning|Learning]]
+
<code>
** [[:Category:Learning::HowTo|HowTo]]
+
#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
 +
</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

  1. 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