working wavelet transform

Dependencies:   CMSIS_DSP_5 include mbed

Fork of Nucleo-Heart-Rate by BAP TUDelft

main.cpp

Committer:
xorjoep
Date:
2018-06-20
Revision:
0:f39864a2bd26
Child:
2:3d6a6b9afee0

File content as of revision 0:f39864a2bd26:

//#include <math.h>
#include "arm_common_tables.h"
#include "arm_const_structs.h"
#include "arm_math.h"
#include "mbed.h"
#include "../header/wavelib.h"



DigitalOut myled(LED1);
Serial usb_serial(SERIAL_TX, SERIAL_RX);                                            // tx, rx
const int baud_rate = 115200;        
                                                     // Baud rate.
static float32_t cosSum[320];

float32_t *cosArray(int length, int freq, int fs){
    float *p = (float *) malloc(sizeof(float) * length);
    double Ts = (double) 1/fs; 
    double w = 2*PI*freq;
        
    for(int i = 0; i < length; i++){
        p[i] = arm_cos_f32(w * Ts * i);
    }
    
    return p;
}

int main() {
    usb_serial.baud(baud_rate);                                                     // Set serial USB connection baud rate (variable is declared in config part).
    
    
    uint32_t N = 320;
    uint32_t fs = 100;
    uint32_t freq1 = 1;
    uint32_t freq2 = 12;
    float32_t *testCos1 = cosArray(N, freq1, fs);
    float32_t *testCos2 = cosArray(N, freq2, fs);
    
    wave_object obj;
    wt_object wt;
    
    double *inp; //,*out,*diff;
    int i, J = 3;

    char *name = "db4";
    obj = wave_init(name);// Initialize the wavelet
    
    for(i = 0; i < N; i++){
        cosSum[i] = testCos1[i] + testCos2[i];
    }
    inp = (double*)malloc(sizeof(double)* N);
    //out = (double*)malloc(sizeof(double)* N);
//    diff = (double*)malloc(sizeof(double)* N);

    for (i = 0; i < N; i++) {
        inp[i] = cosSum[i];
   }
    myled = !myled;
    
    wt = wt_init(obj, "modwt", 320, 3);// Initialize the wavelet transform object
    myled = !myled;
    
    modwt(wt, inp);// Perform MODW

    while(1){
        for (i = 0; i < wt->outlength; ++i) {
            printf("%d %e \n",i, wt->output[i]);
        }
        myled = !myled;
    }
//   setDWTExtension(wt, "sym");// Options are "per" and "sym". Symmetric is the default option
//    setWTConv(wt, "direct");
}