working wavelet transform

Dependencies:   CMSIS_DSP_5 include mbed

Fork of Nucleo-Heart-Rate by BAP TUDelft

Committer:
xorjoep
Date:
Wed Jun 20 09:25:46 2018 +0000
Revision:
2:3d6a6b9afee0
Parent:
0:f39864a2bd26
Child:
3:e44f3e92cb34
Child:
4:8bd1cecf2a2e
now uses vals.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xorjoep 0:f39864a2bd26 1 //#include <math.h>
xorjoep 0:f39864a2bd26 2 #include "arm_common_tables.h"
xorjoep 0:f39864a2bd26 3 #include "arm_const_structs.h"
xorjoep 0:f39864a2bd26 4 #include "arm_math.h"
xorjoep 0:f39864a2bd26 5 #include "mbed.h"
xorjoep 2:3d6a6b9afee0 6 #include "vals.h"
xorjoep 0:f39864a2bd26 7 #include "../header/wavelib.h"
xorjoep 0:f39864a2bd26 8
xorjoep 0:f39864a2bd26 9 DigitalOut myled(LED1);
xorjoep 0:f39864a2bd26 10 Serial usb_serial(SERIAL_TX, SERIAL_RX); // tx, rx
xorjoep 0:f39864a2bd26 11 const int baud_rate = 115200;
xorjoep 0:f39864a2bd26 12 // Baud rate.
xorjoep 0:f39864a2bd26 13 static float32_t cosSum[320];
xorjoep 0:f39864a2bd26 14
xorjoep 0:f39864a2bd26 15 float32_t *cosArray(int length, int freq, int fs){
xorjoep 0:f39864a2bd26 16 float *p = (float *) malloc(sizeof(float) * length);
xorjoep 0:f39864a2bd26 17 double Ts = (double) 1/fs;
xorjoep 0:f39864a2bd26 18 double w = 2*PI*freq;
xorjoep 0:f39864a2bd26 19
xorjoep 0:f39864a2bd26 20 for(int i = 0; i < length; i++){
xorjoep 0:f39864a2bd26 21 p[i] = arm_cos_f32(w * Ts * i);
xorjoep 0:f39864a2bd26 22 }
xorjoep 0:f39864a2bd26 23
xorjoep 0:f39864a2bd26 24 return p;
xorjoep 0:f39864a2bd26 25 }
xorjoep 0:f39864a2bd26 26
xorjoep 0:f39864a2bd26 27 int main() {
xorjoep 0:f39864a2bd26 28 usb_serial.baud(baud_rate); // Set serial USB connection baud rate (variable is declared in config part).
xorjoep 0:f39864a2bd26 29
xorjoep 0:f39864a2bd26 30
xorjoep 0:f39864a2bd26 31 uint32_t N = 320;
xorjoep 0:f39864a2bd26 32 uint32_t fs = 100;
xorjoep 0:f39864a2bd26 33 uint32_t freq1 = 1;
xorjoep 0:f39864a2bd26 34 uint32_t freq2 = 12;
xorjoep 0:f39864a2bd26 35 float32_t *testCos1 = cosArray(N, freq1, fs);
xorjoep 0:f39864a2bd26 36 float32_t *testCos2 = cosArray(N, freq2, fs);
xorjoep 0:f39864a2bd26 37
xorjoep 0:f39864a2bd26 38 wave_object obj;
xorjoep 0:f39864a2bd26 39 wt_object wt;
xorjoep 0:f39864a2bd26 40
xorjoep 0:f39864a2bd26 41 double *inp; //,*out,*diff;
xorjoep 0:f39864a2bd26 42 int i, J = 3;
xorjoep 0:f39864a2bd26 43
xorjoep 0:f39864a2bd26 44 char *name = "db4";
xorjoep 0:f39864a2bd26 45 obj = wave_init(name);// Initialize the wavelet
xorjoep 0:f39864a2bd26 46
xorjoep 2:3d6a6b9afee0 47 inp = signal_in;
xorjoep 0:f39864a2bd26 48 //out = (double*)malloc(sizeof(double)* N);
xorjoep 0:f39864a2bd26 49 // diff = (double*)malloc(sizeof(double)* N);
xorjoep 0:f39864a2bd26 50
xorjoep 0:f39864a2bd26 51 myled = !myled;
xorjoep 0:f39864a2bd26 52
xorjoep 2:3d6a6b9afee0 53 wt = wt_init(obj, "modwt", N, 3);// Initialize the wavelet transform object
xorjoep 0:f39864a2bd26 54 myled = !myled;
xorjoep 0:f39864a2bd26 55
xorjoep 0:f39864a2bd26 56 modwt(wt, inp);// Perform MODW
xorjoep 0:f39864a2bd26 57
xorjoep 0:f39864a2bd26 58 while(1){
xorjoep 0:f39864a2bd26 59 for (i = 0; i < wt->outlength; ++i) {
xorjoep 2:3d6a6b9afee0 60 usb_serial.printf("%d %e \n",i, wt->output[i]);
xorjoep 0:f39864a2bd26 61 }
xorjoep 0:f39864a2bd26 62 myled = !myled;
xorjoep 0:f39864a2bd26 63 }
xorjoep 0:f39864a2bd26 64 // setDWTExtension(wt, "sym");// Options are "per" and "sym". Symmetric is the default option
xorjoep 0:f39864a2bd26 65 // setWTConv(wt, "direct");
xorjoep 0:f39864a2bd26 66 }