|
|
|
#ifndef _LSVM_FFT_H_
|
|
|
|
#define _LSVM_FFT_H_
|
|
|
|
|
|
|
|
#include "_lsvm_types.h"
|
|
|
|
#include "_lsvm_error.h"
|
|
|
|
#include <math.h>
|
|
|
|
|
|
|
|
/*
|
|
|
|
// 1-dimensional FFT
|
|
|
|
//
|
|
|
|
// API
|
|
|
|
// int fft(float *x_in, float *x_out, int n, int shift);
|
|
|
|
// INPUT
|
|
|
|
// x_in - input signal
|
|
|
|
// n - number of elements for searching Fourier image
|
|
|
|
// shift - shift between input elements
|
|
|
|
// OUTPUT
|
|
|
|
// x_out - output signal (contains 2n elements in order
|
|
|
|
Re(x_in[0]), Im(x_in[0]), Re(x_in[1]), Im(x_in[1]) and etc.)
|
|
|
|
// RESULT
|
|
|
|
// Error status
|
|
|
|
*/
|
|
|
|
int fft(float *x_in, float *x_out, int n, int shift);
|
|
|
|
|
|
|
|
/*
|
|
|
|
// Inverse 1-dimensional FFT
|
|
|
|
//
|
|
|
|
// API
|
|
|
|
// int fftInverse(float *x_in, float *x_out, int n, int shift);
|
|
|
|
// INPUT
|
|
|
|
// x_in - Fourier image of 1d input signal(contains 2n elements
|
|
|
|
in order Re(x_in[0]), Im(x_in[0]),
|
|
|
|
Re(x_in[1]), Im(x_in[1]) and etc.)
|
|
|
|
// n - number of elements for searching counter FFT image
|
|
|
|
// shift - shift between input elements
|
|
|
|
// OUTPUT
|
|
|
|
// x_in - input signal (contains n elements)
|
|
|
|
// RESULT
|
|
|
|
// Error status
|
|
|
|
*/
|
|
|
|
int fftInverse(float *x_in, float *x_out, int n, int shift);
|
|
|
|
|
|
|
|
/*
|
|
|
|
// 2-dimensional FFT
|
|
|
|
//
|
|
|
|
// API
|
|
|
|
// int fft2d(float *x_in, float *x_out, int numRows, int numColls);
|
|
|
|
// INPUT
|
|
|
|
// x_in - input signal (matrix, launched by rows)
|
|
|
|
// numRows - number of rows
|
|
|
|
// numColls - number of collumns
|
|
|
|
// OUTPUT
|
|
|
|
// x_out - output signal (contains (2 * numRows * numColls) elements
|
|
|
|
in order Re(x_in[0][0]), Im(x_in[0][0]),
|
|
|
|
Re(x_in[0][1]), Im(x_in[0][1]) and etc.)
|
|
|
|
// RESULT
|
|
|
|
// Error status
|
|
|
|
*/
|
|
|
|
int fft2d(float *x_in, float *x_out, int numRows, int numColls);
|
|
|
|
|
|
|
|
/*
|
|
|
|
// Inverse 2-dimensional FFT
|
|
|
|
//
|
|
|
|
// API
|
|
|
|
// int fftInverse2d(float *x_in, float *x_out, int numRows, int numColls);
|
|
|
|
// INPUT
|
|
|
|
// x_in - Fourier image of matrix (contains (2 * numRows * numColls)
|
|
|
|
elements in order Re(x_in[0][0]), Im(x_in[0][0]),
|
|
|
|
Re(x_in[0][1]), Im(x_in[0][1]) and etc.)
|
|
|
|
// numRows - number of rows
|
|
|
|
// numColls - number of collumns
|
|
|
|
// OUTPUT
|
|
|
|
// x_out - initial signal (matrix, launched by rows)
|
|
|
|
// RESULT
|
|
|
|
// Error status
|
|
|
|
*/
|
|
|
|
int fftInverse2d(float *x_in, float *x_out, int numRows, int numColls);
|
|
|
|
|
|
|
|
#endif
|