From fb6696ea0232887f63a943b11e0f16b811b241b9 Mon Sep 17 00:00:00 2001 From: ymherklotz Date: Mon, 5 Mar 2018 12:54:29 +0000 Subject: Ex2 working --- Project/RTDSP/.launches/RTDSP.launch | 6 ++--- Project/RTDSP/dft.c | 46 ------------------------------------ Project/RTDSP/frame.c | 9 ++++--- 3 files changed, 9 insertions(+), 52 deletions(-) delete mode 100644 Project/RTDSP/dft.c (limited to 'Project/RTDSP') diff --git a/Project/RTDSP/.launches/RTDSP.launch b/Project/RTDSP/.launches/RTDSP.launch index b408121..51f5f6d 100644 --- a/Project/RTDSP/.launches/RTDSP.launch +++ b/Project/RTDSP/.launches/RTDSP.launch @@ -12,8 +12,8 @@ - - + + @@ -21,6 +21,6 @@ - + diff --git a/Project/RTDSP/dft.c b/Project/RTDSP/dft.c deleted file mode 100644 index 2e47680..0000000 --- a/Project/RTDSP/dft.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -#define E_PI 3.1415926535897932384626433832795028841971693993751058209749445923078164062 -#define N 8 - -typedef struct { - float r; - float i; -} Complex; - -float x[] = {0, 0, 2, 3, 4, 0, 0, 0}; -Complex X[N]; -float x_out[N]; - -void dft() { - int n, k; - for(k = 0; k < N; ++k) { - X[k].r = 0.f; - X[k].i = 0.f; - for(n = 0; n < N; ++n) { - X[k].r += x[n] * cos(2 * E_PI * k * n / N); - X[k].i -= x[n] * sin(2 * E_PI * k * n / N); - } - } -} - -void idft() { - int n, k; - for(n = 0; n < N; ++n) { - x_out[n] = 0.f; - for(k = 0; k < N; ++k) { - x_out[n] += X[k].r * cos(2 * E_PI * k * n / N) - X[k].i * sin(2 * E_PI * k * n / N); - } - x_out[n] /= N; - } -} - -int main() { - int k; - dft(); - idft(); - for(k = 0; k < N; ++k) { - printf("x[%d] = %.2f, X[%d] = %.2f + %.2fi, x_out[%d] = %.2f\n", k, x[k], k, X[k].r, X[k].i, k, x_out[k]); - } -} diff --git a/Project/RTDSP/frame.c b/Project/RTDSP/frame.c index 1db240e..0f506e0 100644 --- a/Project/RTDSP/frame.c +++ b/Project/RTDSP/frame.c @@ -78,7 +78,7 @@ float *input; float *intermediate; float *output; volatile int index = 0; -float* mag; +float mag[BUFLEN]; complex C[BUFLEN]; @@ -197,14 +197,17 @@ void wait_buffer(void) /************************* DO PROCESSING OF FRAME HERE **************************/ // Copy data elements to complex - for (i = 0; i < BUFLEN; ++i) + for (i = 0; i < BUFLEN; ++i) { + C[i].i = 0; C[i].r = intermediate[i]; + } fft(BUFLEN, C); // Calculate the magnitude of the complex numbers - for (i = 0; i < BUFLEN; ++i) + for (i = 0; i < BUFLEN; ++i) { mag[i] = cabs(C[i]); + } -- cgit