mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-22 20:03:09 +02:00
usrp/fft.c: added Hamming, make dump easier to interpret
- fft.c (window, fft_complex): added Hamming window function - fft.c (do_fft): shift dump output such that center frequency is in the middle, not at the edges
This commit is contained in:
parent
22f7eee195
commit
fff1e1ed2f
14
usrp/fft.c
14
usrp/fft.c
@ -12,6 +12,12 @@
|
|||||||
static int alg = 0;
|
static int alg = 0;
|
||||||
|
|
||||||
|
|
||||||
|
static double window(int i, int n)
|
||||||
|
{
|
||||||
|
return 0.54-0.46*cos(M_PI*2*i/(n-1));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void fft_complex(int n, const float *re, const float *im, double *res)
|
static void fft_complex(int n, const float *re, const float *im, double *res)
|
||||||
{
|
{
|
||||||
fftw_complex *in, *out;
|
fftw_complex *in, *out;
|
||||||
@ -23,8 +29,9 @@ static void fft_complex(int n, const float *re, const float *im, double *res)
|
|||||||
out = fftw_malloc(sizeof(fftw_complex)*n);
|
out = fftw_malloc(sizeof(fftw_complex)*n);
|
||||||
|
|
||||||
for (i = 0; i != n; i++) {
|
for (i = 0; i != n; i++) {
|
||||||
in[i][0] = re[i];
|
double w = window(i, n);
|
||||||
in[i][1] = im[i];
|
in[i][0] = re[i]*w;
|
||||||
|
in[i][1] = im[i]*w;
|
||||||
}
|
}
|
||||||
|
|
||||||
plan = fftw_plan_dft_1d(n, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
|
plan = fftw_plan_dft_1d(n, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
|
||||||
@ -127,7 +134,8 @@ static void do_fft(int skip, int dump, int low, int high, double threshold)
|
|||||||
|
|
||||||
if (dump) {
|
if (dump) {
|
||||||
for (i = 0; i < n; i += 1)
|
for (i = 0; i < n; i += 1)
|
||||||
printf("%d %g\n", i, 10*log(res[i])/log(10));
|
printf("%d %g\n", i,
|
||||||
|
10*log(res[(i+n/2) % n])/log(10));
|
||||||
} else {
|
} else {
|
||||||
double s = 0;
|
double s = 0;
|
||||||
double db;
|
double db;
|
||||||
|
Loading…
Reference in New Issue
Block a user