working wavelet transform
Dependencies: CMSIS_DSP_5 include mbed
Fork of Nucleo-Heart-Rate by
main.cpp@0:f39864a2bd26, 2018-06-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |