working wavelet transform

Dependencies:   CMSIS_DSP_5 include mbed

Fork of Nucleo-Heart-Rate by BAP TUDelft

Committer:
xorjoep
Date:
Wed Jun 20 09:09:34 2018 +0000
Revision:
0:f39864a2bd26
Child:
2:3d6a6b9afee0
It's the best ever

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