working wavelet transform

Dependencies:   CMSIS_DSP_5 include mbed

Fork of Nucleo-Heart-Rate by BAP TUDelft

Committer:
MockyBirdTwo
Date:
Thu Jun 21 11:55:09 2018 +0000
Revision:
10:f62efa525bb6
Parent:
9:854f2d4eda4a
Child:
11:337c5ff16f27
working transform level 3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xorjoep 0:f39864a2bd26 1 #include "arm_common_tables.h"
xorjoep 0:f39864a2bd26 2 #include "arm_const_structs.h"
xorjoep 0:f39864a2bd26 3 #include "arm_math.h"
xorjoep 0:f39864a2bd26 4 #include "mbed.h"
xorjoep 2:3d6a6b9afee0 5 #include "vals.h"
xorjoep 0:f39864a2bd26 6 #include "../header/wavelib.h"
xorjoep 0:f39864a2bd26 7
MockyBirdTwo 10:f62efa525bb6 8
MockyBirdTwo 10:f62efa525bb6 9
xorjoep 0:f39864a2bd26 10 DigitalOut myled(LED1);
xorjoep 4:8bd1cecf2a2e 11 DigitalOut myled2(LED2);
xorjoep 0:f39864a2bd26 12
xorjoep 4:8bd1cecf2a2e 13 Serial usb_serial(SERIAL_TX, SERIAL_RX); // tx, rx
xorjoep 4:8bd1cecf2a2e 14 const int baud_rate = 115200; // Baud rate.
xorjoep 0:f39864a2bd26 15
MockyBirdTwo 10:f62efa525bb6 16 int main()
MockyBirdTwo 10:f62efa525bb6 17 {
MockyBirdTwo 10:f62efa525bb6 18 usb_serial.baud(baud_rate);
MockyBirdTwo 10:f62efa525bb6 19 // Set serial USB connection baud rate (variable is declared in config part).
MockyBirdTwo 10:f62efa525bb6 20 wave_object wave_init_obj;
xorjoep 4:8bd1cecf2a2e 21 wt_object wavelet;
xorjoep 4:8bd1cecf2a2e 22
MockyBirdTwo 10:f62efa525bb6 23 int N_samples = 2000;
xorjoep 4:8bd1cecf2a2e 24 int wt_scale = 3;
MockyBirdTwo 9:854f2d4eda4a 25 // int fs = 160;
MockyBirdTwo 6:ce7f5faea04a 26 int i,j;
MockyBirdTwo 10:f62efa525bb6 27
xorjoep 0:f39864a2bd26 28
xorjoep 4:8bd1cecf2a2e 29 double *inp = signal_in; //,*out,*diff;
MockyBirdTwo 10:f62efa525bb6 30 double *out =(double*)malloc(sizeof(double)* N_samples);
MockyBirdTwo 10:f62efa525bb6 31 double *wt_res=(double*)malloc(sizeof(double)* N_samples);
MockyBirdTwo 10:f62efa525bb6 32
xorjoep 4:8bd1cecf2a2e 33 char *m_wavelet = "db4";
xorjoep 4:8bd1cecf2a2e 34 wave_init_obj = wave_init(m_wavelet);// Initialize the wavelet
MockyBirdTwo 10:f62efa525bb6 35
xorjoep 4:8bd1cecf2a2e 36 wavelet = wt_init(wave_init_obj, "modwt", N_samples, wt_scale);// Initialize the wavelet transform object
MockyBirdTwo 10:f62efa525bb6 37
xorjoep 4:8bd1cecf2a2e 38 modwt(wavelet, inp);// Perform MODW
MockyBirdTwo 10:f62efa525bb6 39 wt_summary(wavelet);
MockyBirdTwo 10:f62efa525bb6 40 double t_wavelet[N_samples*wt_scale+2000];
MockyBirdTwo 10:f62efa525bb6 41 memset(t_wavelet,0,N_samples*wt_scale+2000);
MockyBirdTwo 10:f62efa525bb6 42
MockyBirdTwo 10:f62efa525bb6 43 // int wt_scale_start=((wavelet->outlength)/wt_scale)*0;//1=last level
MockyBirdTwo 10:f62efa525bb6 44 // int wt_scale_end=((wavelet->outlength)/wt_scale)*2;
MockyBirdTwo 10:f62efa525bb6 45 int wt_scale_start=2000;//Level 3
MockyBirdTwo 10:f62efa525bb6 46 int wt_scale_end=4000;
MockyBirdTwo 6:ce7f5faea04a 47 //Choose scales
MockyBirdTwo 10:f62efa525bb6 48 for (i=0,j=wt_scale_start; j<wt_scale_end; i++,j++) {
MockyBirdTwo 10:f62efa525bb6 49 t_wavelet[i]=wavelet->output[j];
MockyBirdTwo 6:ce7f5faea04a 50 }
MockyBirdTwo 10:f62efa525bb6 51 wavelet->output=t_wavelet;
MockyBirdTwo 9:854f2d4eda4a 52 imodwt(wavelet,out);// Perform IMODWT
xorjoep 0:f39864a2bd26 53
MockyBirdTwo 10:f62efa525bb6 54 for (i=0; i<N_samples; ++i) {
MockyBirdTwo 10:f62efa525bb6 55 wt_res[i]=wavelet->output[i]*fabs(wavelet->output[i]);
MockyBirdTwo 10:f62efa525bb6 56 }
MockyBirdTwo 10:f62efa525bb6 57
MockyBirdTwo 10:f62efa525bb6 58 while(1) {
MockyBirdTwo 10:f62efa525bb6 59
MockyBirdTwo 10:f62efa525bb6 60 for (i = 0; i < N_samples; ++i) {
MockyBirdTwo 10:f62efa525bb6 61 usb_serial.printf("%d %e \n",i, wt_res[i]);
xorjoep 0:f39864a2bd26 62 }
xorjoep 0:f39864a2bd26 63 myled = !myled;
xorjoep 0:f39864a2bd26 64 }
MockyBirdTwo 10:f62efa525bb6 65 // while(1) {
MockyBirdTwo 10:f62efa525bb6 66 //
MockyBirdTwo 10:f62efa525bb6 67 // for (i = 0; i < N_samples; ++i) {
MockyBirdTwo 10:f62efa525bb6 68 // usb_serial.printf("%d %e \n",i, wavelet->output[i]);
MockyBirdTwo 10:f62efa525bb6 69 // }
MockyBirdTwo 10:f62efa525bb6 70 // myled = !myled;
MockyBirdTwo 10:f62efa525bb6 71 // }
MockyBirdTwo 10:f62efa525bb6 72
MockyBirdTwo 10:f62efa525bb6 73
MockyBirdTwo 10:f62efa525bb6 74
MockyBirdTwo 10:f62efa525bb6 75 //Algoritme
MockyBirdTwo 10:f62efa525bb6 76
xorjoep 0:f39864a2bd26 77 }