You Are Here:

Community: Wiki

This page was last modified on 10 September 2009, at 17:17.

FFT algorithm

From Forum Nokia Wiki

Reviewer Approved   

Contents

Introduction

Fast fourier transform (FFT) is one of the key algorithms of digital signal processing (DSP). Combined with the mobile capabilities of S60 devices it opens up a wide range of new possibilities for applications.

Setup

Using FFT/IFFT algorithms in S60 is quite simple with the following instructions.

1) Download FFT algorithm by Laurent de Soras for C++.

2) Port the algorithm for Symbian with the following minor modifications:

  • Set the used data type in fftreal.h:
typedef TReal flt_t;
  • Create standard two-phased constructors:
static CFFTReal* NewL(const TInt aLength);
void ConstructL();
  • Add epoc32\include\libc to additional include directories and link against estlib.lib
  • Modify FFTReal to inherit CBase and add #include <e32base.h>

Using the algorithm

Normal FFT:

fftreal ->Fft(fft, x);

Inverse FFT:

fftreal->Ifft(fft, x);
fftreal->Rescale(x);

Important As the FFT coefficients may have complex values, they will be presented in format: <Real values of coefficients 0-n><Complex values of coefficients 0-n>. This way the length of the FFT result array is the same as the number of FFT points.

Example

#include "fftreal.h"
 
// FFT length must be a power of 2
TInt frame = 1024;
 
// Create objects
FFTReal* fftreal = FFTReal::NewL(frame);
FFTReal::flt_t * const x = new (ELeave) FFTReal::flt_t[frame];
FFTReal::flt_t * const fft = new (ELeave) FFTReal::flt_t[frame];
 
// Fetch the source signal from somewhere (eg. audio)
GetSourceSignal(x);
 
// Actual FFT calculation
fftreal ->Fft(fft, x);
 
// Modify FFT coefficients etc.
ModifyFFT(fft);
 
// Convert back to time domain, note the important Rescale()
// after every Ifft() call!
fftreal->Ifft(fft, x);
fftreal->Rescale(x);
 
// Do something with the result
ProcessResult(x);
 
delete fft;
delete x;
delete fftreal;

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
User Rating: qfnZuserE5FratingQNx3E2E0000X