changeset 750:e6d807ce715b

Add two more functions for converting FFT data to frequency and time domains.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 04 May 2013 23:41:57 +0300
parents 44138892c784
children 817e792d9360
files dmfft.c dmfft.h
diffstat 2 files changed, 44 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/dmfft.c	Sat May 04 23:29:22 2013 +0300
+++ b/dmfft.c	Sat May 04 23:41:57 2013 +0300
@@ -149,3 +149,42 @@
 
     return DMERR_OK;
 }
+
+
+int dmConvertFFTtoFreqDomain(DMFFTContext *ctx, DMFFTType *buffer, DMFFTType *real, DMFFTType *imag)
+{
+    int i;
+    if (ctx == NULL || buffer == NULL || real == NULL || imag == NULL)
+        return DMERR_NULLPTR;
+
+    // Convert from bitreversed form to normal frequency domain
+    for (i = 1; i < ctx->npoints; i++)
+    {
+        real[i] = buffer[ctx->breversed[i]  ];
+        imag[i] = buffer[ctx->breversed[i]+1];
+    }
+
+    // Make the ends meet
+    real[0]            = buffer[0];
+    imag[0]            = 0;
+    real[ctx->npoints] = buffer[1];
+    imag[ctx->npoints] = 0;
+
+    return DMERR_OK;
+}
+
+
+int dmConvertFFTtoTimeDomain(DMFFTContext *ctx, DMFFTType *buffer, DMFFTType *tdom)
+{
+    int i;
+    if (ctx == NULL || buffer == NULL || tdom == NULL)
+        return DMERR_NULLPTR;
+
+    for (i = 1; i < ctx->npoints; i++)
+    {
+        tdom[i*2  ] = buffer[ctx->breversed[i]  ];
+        tdom[i*2+1] = buffer[ctx->breversed[i]+1];
+    }
+
+    return DMERR_OK;
+}
--- a/dmfft.h	Sat May 04 23:29:22 2013 +0300
+++ b/dmfft.h	Sat May 04 23:41:57 2013 +0300
@@ -15,9 +15,11 @@
 } DMFFTContext;
 
 
-int dmInitializeFFT(DMFFTContext *, int);
-void dmEndFFT(DMFFTContext *);
-int dmRealFFT(DMFFTContext *, DMFFTType *);
+int   dmInitializeFFT(DMFFTContext *, int);
+void  dmEndFFT(DMFFTContext *);
+int   dmRealFFT(DMFFTContext *, DMFFTType *);
+int   dmConvertFFTtoFreqDomain(DMFFTContext *ctx, DMFFTType *buffer, DMFFTType *real, DMFFTType *imag);
+int   dmConvertFFTtoTimeDomain(DMFFTContext *ctx, DMFFTType *buffer, DMFFTType *tdom);
 
 
 #endif // DMFFT_H