Eindelijk!!!!!
Fork of SignalNumber2 by
signalnumber.cpp@4:a79f9f3a9e40, 2017-11-01 (annotated)
- Committer:
- peterknoben
- Date:
- Wed Nov 01 22:23:10 2017 +0000
- Revision:
- 4:a79f9f3a9e40
- Parent:
- 3:f8d57796d69b
- Child:
- 5:f3ddc3a7b292
working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
peterknoben | 0:5f8dee4d4b09 | 1 | #include "signalnumber.h" |
peterknoben | 0:5f8dee4d4b09 | 2 | #include "mbed.h" |
peterknoben | 0:5f8dee4d4b09 | 3 | |
peterknoben | 0:5f8dee4d4b09 | 4 | |
peterknoben | 0:5f8dee4d4b09 | 5 | //Constants for mean value |
peterknoben | 4:a79f9f3a9e40 | 6 | const int n = 1500; //Window size for the mean value |
peterknoben | 4:a79f9f3a9e40 | 7 | float emg0_filtered[n] = {}, emg2_filtered[n] = {}, emg4_filtered[n]={}; |
peterknoben | 4:a79f9f3a9e40 | 8 | int count1 = 0, count2 = 0, count3 = 0; |
peterknoben | 4:a79f9f3a9e40 | 9 | int countx = 0, county = 0.0, countz = 0.0; |
peterknoben | 4:a79f9f3a9e40 | 10 | float meanL = 0.0, meanR = 0.0, meanM = 0.0; |
peterknoben | 0:5f8dee4d4b09 | 11 | float sum = 0.0; |
peterknoben | 0:5f8dee4d4b09 | 12 | |
peterknoben | 0:5f8dee4d4b09 | 13 | |
peterknoben | 0:5f8dee4d4b09 | 14 | //Constants EMG switch |
peterknoben | 4:a79f9f3a9e40 | 15 | const float LeftMin = 0.20; |
peterknoben | 4:a79f9f3a9e40 | 16 | const float LeftMax = 0.50; |
peterknoben | 4:a79f9f3a9e40 | 17 | /* |
peterknoben | 4:a79f9f3a9e40 | 18 | |
peterknoben | 4:a79f9f3a9e40 | 19 | |
peterknoben | 0:5f8dee4d4b09 | 20 | const float LeftFastmin=0.075; |
peterknoben | 0:5f8dee4d4b09 | 21 | const float LeftFastmax=0.15; |
peterknoben | 0:5f8dee4d4b09 | 22 | const float LeftSlowmin=0.2; |
peterknoben | 0:5f8dee4d4b09 | 23 | const float LeftSlowmax=0.35; |
peterknoben | 0:5f8dee4d4b09 | 24 | const float RightSlowmin=0.4; |
peterknoben | 0:5f8dee4d4b09 | 25 | const float RightSlowmax=0.65; |
peterknoben | 0:5f8dee4d4b09 | 26 | const float RightFastmin=0.7; |
peterknoben | 4:a79f9f3a9e40 | 27 | const float RightFastmax=10.5;*/ |
peterknoben | 4:a79f9f3a9e40 | 28 | int NumberL = 0, NumberR =0; |
peterknoben | 0:5f8dee4d4b09 | 29 | //const int action =50; |
peterknoben | 0:5f8dee4d4b09 | 30 | |
peterknoben | 0:5f8dee4d4b09 | 31 | |
peterknoben | 0:5f8dee4d4b09 | 32 | SignalNumber::SignalNumber(void) |
peterknoben | 0:5f8dee4d4b09 | 33 | { |
peterknoben | 0:5f8dee4d4b09 | 34 | |
peterknoben | 0:5f8dee4d4b09 | 35 | } |
peterknoben | 0:5f8dee4d4b09 | 36 | |
peterknoben | 0:5f8dee4d4b09 | 37 | |
peterknoben | 4:a79f9f3a9e40 | 38 | /* |
peterknoben | 0:5f8dee4d4b09 | 39 | // Determine the mean value of the last "n" amount of numbers. |
peterknoben | 0:5f8dee4d4b09 | 40 | float SignalNumber::getmean(const int n, float input){ |
peterknoben | 2:1a677b57ce81 | 41 | emg_filtered[count] = input; |
peterknoben | 0:5f8dee4d4b09 | 42 | count++; |
peterknoben | 0:5f8dee4d4b09 | 43 | if (count == n){ |
peterknoben | 0:5f8dee4d4b09 | 44 | count = 0; |
peterknoben | 0:5f8dee4d4b09 | 45 | } |
peterknoben | 4:a79f9f3a9e40 | 46 | float sum_math = 0.0; |
peterknoben | 4:a79f9f3a9e40 | 47 | for (int m=0 ; m<n ; m++ ){ |
peterknoben | 4:a79f9f3a9e40 | 48 | sum_math = sum_math + emg_filtered[m]; |
peterknoben | 4:a79f9f3a9e40 | 49 | } |
peterknoben | 4:a79f9f3a9e40 | 50 | float mean_math = sum_math/n; |
peterknoben | 4:a79f9f3a9e40 | 51 | return mean_math; |
peterknoben | 4:a79f9f3a9e40 | 52 | }*/ |
peterknoben | 4:a79f9f3a9e40 | 53 | |
peterknoben | 4:a79f9f3a9e40 | 54 | |
peterknoben | 4:a79f9f3a9e40 | 55 | float SignalNumber::getmeanLeft(const int n, float input){ |
peterknoben | 4:a79f9f3a9e40 | 56 | emg0_filtered[count1] = input; |
peterknoben | 4:a79f9f3a9e40 | 57 | count1++; |
peterknoben | 4:a79f9f3a9e40 | 58 | if (count1 == n){ |
peterknoben | 4:a79f9f3a9e40 | 59 | count1 = 0; |
peterknoben | 4:a79f9f3a9e40 | 60 | } |
peterknoben | 4:a79f9f3a9e40 | 61 | float sum_math = 0.0; |
peterknoben | 4:a79f9f3a9e40 | 62 | for (int m=0 ; m<n ; m++ ){ |
peterknoben | 4:a79f9f3a9e40 | 63 | sum_math = sum_math + emg0_filtered[m]; |
peterknoben | 4:a79f9f3a9e40 | 64 | } |
peterknoben | 4:a79f9f3a9e40 | 65 | float mean_math = sum_math/n; |
peterknoben | 4:a79f9f3a9e40 | 66 | return mean_math; |
peterknoben | 4:a79f9f3a9e40 | 67 | } |
peterknoben | 4:a79f9f3a9e40 | 68 | float SignalNumber::getmeanRight(const int n, float input){ |
peterknoben | 4:a79f9f3a9e40 | 69 | emg2_filtered[count2] = input; |
peterknoben | 4:a79f9f3a9e40 | 70 | count2++; |
peterknoben | 4:a79f9f3a9e40 | 71 | if (count2 == n){ |
peterknoben | 4:a79f9f3a9e40 | 72 | count2 = 0; |
peterknoben | 4:a79f9f3a9e40 | 73 | } |
peterknoben | 4:a79f9f3a9e40 | 74 | float sum_math = 0.0; |
peterknoben | 4:a79f9f3a9e40 | 75 | for (int m=0 ; m<n ; m++ ){ |
peterknoben | 4:a79f9f3a9e40 | 76 | sum_math = sum_math + emg2_filtered[m]; |
peterknoben | 4:a79f9f3a9e40 | 77 | } |
peterknoben | 4:a79f9f3a9e40 | 78 | float mean_math = sum_math/n; |
peterknoben | 4:a79f9f3a9e40 | 79 | return mean_math; |
peterknoben | 4:a79f9f3a9e40 | 80 | } |
peterknoben | 4:a79f9f3a9e40 | 81 | float SignalNumber::getmeanMode(const int n, float input){ |
peterknoben | 4:a79f9f3a9e40 | 82 | emg4_filtered[count3] = input; |
peterknoben | 4:a79f9f3a9e40 | 83 | count3++; |
peterknoben | 4:a79f9f3a9e40 | 84 | if (count3 == n){ |
peterknoben | 4:a79f9f3a9e40 | 85 | count3 = 0; |
peterknoben | 4:a79f9f3a9e40 | 86 | } |
peterknoben | 4:a79f9f3a9e40 | 87 | float sum_math = 0.0; |
peterknoben | 4:a79f9f3a9e40 | 88 | for (int m=0 ; m<n ; m++ ){ |
peterknoben | 4:a79f9f3a9e40 | 89 | sum_math = sum_math + emg4_filtered[m]; |
peterknoben | 4:a79f9f3a9e40 | 90 | } |
peterknoben | 4:a79f9f3a9e40 | 91 | float mean_math = sum_math/n; |
peterknoben | 0:5f8dee4d4b09 | 92 | return mean_math; |
peterknoben | 0:5f8dee4d4b09 | 93 | } |
peterknoben | 0:5f8dee4d4b09 | 94 | float SignalNumber::calibrate(const int n, float input){ |
peterknoben | 4:a79f9f3a9e40 | 95 | float offset = getmeanLeft(n, input); |
peterknoben | 0:5f8dee4d4b09 | 96 | return offset; |
peterknoben | 0:5f8dee4d4b09 | 97 | } |
peterknoben | 0:5f8dee4d4b09 | 98 | |
peterknoben | 4:a79f9f3a9e40 | 99 | |
peterknoben | 4:a79f9f3a9e40 | 100 | |
peterknoben | 4:a79f9f3a9e40 | 101 | |
peterknoben | 4:a79f9f3a9e40 | 102 | |
peterknoben | 4:a79f9f3a9e40 | 103 | int SignalNumber::getnumberLeft(const int n, const int action, float input){ |
peterknoben | 4:a79f9f3a9e40 | 104 | meanL= getmeanLeft(n, input); |
peterknoben | 4:a79f9f3a9e40 | 105 | //Check first case |
peterknoben | 4:a79f9f3a9e40 | 106 | if( meanL< LeftMin ) { |
peterknoben | 4:a79f9f3a9e40 | 107 | if (county <action){ |
peterknoben | 4:a79f9f3a9e40 | 108 | meanL= getmeanLeft(n, input); |
peterknoben | 4:a79f9f3a9e40 | 109 | if(meanL< LeftMin){ |
peterknoben | 4:a79f9f3a9e40 | 110 | county++; |
peterknoben | 4:a79f9f3a9e40 | 111 | } |
peterknoben | 4:a79f9f3a9e40 | 112 | else{ |
peterknoben | 4:a79f9f3a9e40 | 113 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 114 | NumberL=0; |
peterknoben | 4:a79f9f3a9e40 | 115 | } |
peterknoben | 4:a79f9f3a9e40 | 116 | } |
peterknoben | 4:a79f9f3a9e40 | 117 | else{ |
peterknoben | 4:a79f9f3a9e40 | 118 | NumberL = 0; |
peterknoben | 4:a79f9f3a9e40 | 119 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 120 | } |
peterknoben | 4:a79f9f3a9e40 | 121 | } |
peterknoben | 4:a79f9f3a9e40 | 122 | //Check second case |
peterknoben | 4:a79f9f3a9e40 | 123 | else if(meanL >= LeftMin and meanL < LeftMax){ |
peterknoben | 4:a79f9f3a9e40 | 124 | if (county <action){ |
peterknoben | 4:a79f9f3a9e40 | 125 | meanL= getmeanLeft(n, input); |
peterknoben | 4:a79f9f3a9e40 | 126 | if(meanL >= LeftMin and meanL < LeftMax){ |
peterknoben | 4:a79f9f3a9e40 | 127 | county++; |
peterknoben | 4:a79f9f3a9e40 | 128 | } |
peterknoben | 4:a79f9f3a9e40 | 129 | else{ |
peterknoben | 4:a79f9f3a9e40 | 130 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 131 | NumberL=0; |
peterknoben | 4:a79f9f3a9e40 | 132 | } |
peterknoben | 4:a79f9f3a9e40 | 133 | } |
peterknoben | 4:a79f9f3a9e40 | 134 | else{ |
peterknoben | 4:a79f9f3a9e40 | 135 | NumberL = 1; |
peterknoben | 4:a79f9f3a9e40 | 136 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 137 | } |
peterknoben | 4:a79f9f3a9e40 | 138 | } |
peterknoben | 4:a79f9f3a9e40 | 139 | else if( meanL>=LeftMax) { |
peterknoben | 4:a79f9f3a9e40 | 140 | if (county <action){ |
peterknoben | 4:a79f9f3a9e40 | 141 | meanL= getmeanLeft(n, input); |
peterknoben | 4:a79f9f3a9e40 | 142 | if(meanL>=LeftMax){ |
peterknoben | 4:a79f9f3a9e40 | 143 | county++; |
peterknoben | 4:a79f9f3a9e40 | 144 | } |
peterknoben | 4:a79f9f3a9e40 | 145 | else{ |
peterknoben | 4:a79f9f3a9e40 | 146 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 147 | NumberL=0; |
peterknoben | 4:a79f9f3a9e40 | 148 | } |
peterknoben | 4:a79f9f3a9e40 | 149 | } |
peterknoben | 4:a79f9f3a9e40 | 150 | else{ |
peterknoben | 4:a79f9f3a9e40 | 151 | NumberL = 2; |
peterknoben | 4:a79f9f3a9e40 | 152 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 153 | } |
peterknoben | 4:a79f9f3a9e40 | 154 | } |
peterknoben | 4:a79f9f3a9e40 | 155 | else{ |
peterknoben | 4:a79f9f3a9e40 | 156 | county=0; |
peterknoben | 4:a79f9f3a9e40 | 157 | NumberL =0; |
peterknoben | 4:a79f9f3a9e40 | 158 | } |
peterknoben | 4:a79f9f3a9e40 | 159 | return NumberL; |
peterknoben | 4:a79f9f3a9e40 | 160 | } |
peterknoben | 4:a79f9f3a9e40 | 161 | |
peterknoben | 4:a79f9f3a9e40 | 162 | int SignalNumber::getnumberRight(const int n, const int action, float input){ |
peterknoben | 4:a79f9f3a9e40 | 163 | meanR= getmeanRight(n, input); |
peterknoben | 4:a79f9f3a9e40 | 164 | //Check first case |
peterknoben | 4:a79f9f3a9e40 | 165 | if( meanR< LeftMin ) { |
peterknoben | 4:a79f9f3a9e40 | 166 | if (countx <action){ |
peterknoben | 4:a79f9f3a9e40 | 167 | meanR= getmeanRight(n, input); |
peterknoben | 4:a79f9f3a9e40 | 168 | if(meanR< LeftMin){ |
peterknoben | 4:a79f9f3a9e40 | 169 | countx++; |
peterknoben | 4:a79f9f3a9e40 | 170 | } |
peterknoben | 4:a79f9f3a9e40 | 171 | else{ |
peterknoben | 4:a79f9f3a9e40 | 172 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 173 | NumberR=0; |
peterknoben | 4:a79f9f3a9e40 | 174 | } |
peterknoben | 4:a79f9f3a9e40 | 175 | } |
peterknoben | 4:a79f9f3a9e40 | 176 | else{ |
peterknoben | 4:a79f9f3a9e40 | 177 | NumberR = 0; |
peterknoben | 4:a79f9f3a9e40 | 178 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 179 | } |
peterknoben | 4:a79f9f3a9e40 | 180 | } |
peterknoben | 4:a79f9f3a9e40 | 181 | //Check second case |
peterknoben | 4:a79f9f3a9e40 | 182 | else if(meanR >= LeftMin and meanR < LeftMax){ |
peterknoben | 4:a79f9f3a9e40 | 183 | if (countx <action){ |
peterknoben | 4:a79f9f3a9e40 | 184 | meanR= getmeanRight(n, input); |
peterknoben | 4:a79f9f3a9e40 | 185 | if(meanR >= LeftMin and meanR < LeftMax){ |
peterknoben | 4:a79f9f3a9e40 | 186 | countx++; |
peterknoben | 4:a79f9f3a9e40 | 187 | } |
peterknoben | 4:a79f9f3a9e40 | 188 | else{ |
peterknoben | 4:a79f9f3a9e40 | 189 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 190 | NumberR=0; |
peterknoben | 4:a79f9f3a9e40 | 191 | } |
peterknoben | 4:a79f9f3a9e40 | 192 | } |
peterknoben | 4:a79f9f3a9e40 | 193 | else{ |
peterknoben | 4:a79f9f3a9e40 | 194 | NumberR = 1; |
peterknoben | 4:a79f9f3a9e40 | 195 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 196 | } |
peterknoben | 4:a79f9f3a9e40 | 197 | } |
peterknoben | 4:a79f9f3a9e40 | 198 | else if( meanR >=LeftMax ) { |
peterknoben | 4:a79f9f3a9e40 | 199 | if (countx <action){ |
peterknoben | 4:a79f9f3a9e40 | 200 | meanR= getmeanRight(n, input); |
peterknoben | 4:a79f9f3a9e40 | 201 | if( meanR >=LeftMax ){ |
peterknoben | 4:a79f9f3a9e40 | 202 | countx++; |
peterknoben | 4:a79f9f3a9e40 | 203 | } |
peterknoben | 4:a79f9f3a9e40 | 204 | else{ |
peterknoben | 4:a79f9f3a9e40 | 205 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 206 | NumberR=0; |
peterknoben | 4:a79f9f3a9e40 | 207 | } |
peterknoben | 4:a79f9f3a9e40 | 208 | } |
peterknoben | 4:a79f9f3a9e40 | 209 | else{ |
peterknoben | 4:a79f9f3a9e40 | 210 | NumberR = 2; |
peterknoben | 4:a79f9f3a9e40 | 211 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 212 | } |
peterknoben | 4:a79f9f3a9e40 | 213 | } |
peterknoben | 4:a79f9f3a9e40 | 214 | else{ |
peterknoben | 4:a79f9f3a9e40 | 215 | countx=0; |
peterknoben | 4:a79f9f3a9e40 | 216 | NumberR =0; |
peterknoben | 4:a79f9f3a9e40 | 217 | } |
peterknoben | 4:a79f9f3a9e40 | 218 | return NumberR; |
peterknoben | 4:a79f9f3a9e40 | 219 | } |
peterknoben | 4:a79f9f3a9e40 | 220 | |
peterknoben | 4:a79f9f3a9e40 | 221 | |
peterknoben | 4:a79f9f3a9e40 | 222 | |
peterknoben | 4:a79f9f3a9e40 | 223 | |
peterknoben | 4:a79f9f3a9e40 | 224 | |
peterknoben | 4:a79f9f3a9e40 | 225 | |
peterknoben | 4:a79f9f3a9e40 | 226 | |
peterknoben | 4:a79f9f3a9e40 | 227 | |
peterknoben | 4:a79f9f3a9e40 | 228 | |
peterknoben | 4:a79f9f3a9e40 | 229 | |
peterknoben | 0:5f8dee4d4b09 | 230 | //Determine the right signal number |
peterknoben | 0:5f8dee4d4b09 | 231 | /* |
peterknoben | 0:5f8dee4d4b09 | 232 | There will be checked in which range the mean value lies. If the value lies |
peterknoben | 0:5f8dee4d4b09 | 233 | within this range for "action" samples the switch will be changed to the right |
peterknoben | 0:5f8dee4d4b09 | 234 | mode. If the mean value changes outside of the region the switch will be set to |
peterknoben | 0:5f8dee4d4b09 | 235 | 0, this is the resting state. Also the counter will be reset. |
peterknoben | 2:1a677b57ce81 | 236 | n is the amount of samples in the window |
peterknoben | 2:1a677b57ce81 | 237 | action is the amount of same mean values |
peterknoben | 0:5f8dee4d4b09 | 238 | */ |
peterknoben | 4:a79f9f3a9e40 | 239 | /*int SignalNumber::getnumber(const int n, const int action, float input){ |
peterknoben | 3:f8d57796d69b | 240 | mean = getmean(n, input); |
peterknoben | 0:5f8dee4d4b09 | 241 | //Check first case |
peterknoben | 0:5f8dee4d4b09 | 242 | if( mean < LeftFastmin ) { |
peterknoben | 4:a79f9f3a9e40 | 243 | if (countx <action){ |
peterknoben | 3:f8d57796d69b | 244 | mean = getmean(n, input); |
peterknoben | 0:5f8dee4d4b09 | 245 | if(mean < LeftFastmin){ |
peterknoben | 4:a79f9f3a9e40 | 246 | countx++; |
peterknoben | 0:5f8dee4d4b09 | 247 | } |
peterknoben | 0:5f8dee4d4b09 | 248 | else{ |
peterknoben | 4:a79f9f3a9e40 | 249 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 250 | Number=0; |
peterknoben | 0:5f8dee4d4b09 | 251 | } |
peterknoben | 0:5f8dee4d4b09 | 252 | } |
peterknoben | 0:5f8dee4d4b09 | 253 | else{ |
peterknoben | 0:5f8dee4d4b09 | 254 | Number = 0; |
peterknoben | 4:a79f9f3a9e40 | 255 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 256 | } |
peterknoben | 0:5f8dee4d4b09 | 257 | } |
peterknoben | 0:5f8dee4d4b09 | 258 | //Check second case |
peterknoben | 0:5f8dee4d4b09 | 259 | else if(mean <= LeftFastmax and mean > LeftFastmin){ |
peterknoben | 4:a79f9f3a9e40 | 260 | if (countx <action){ |
peterknoben | 3:f8d57796d69b | 261 | mean = getmean(n, input); |
peterknoben | 0:5f8dee4d4b09 | 262 | if(mean <=LeftFastmax and mean>LeftFastmin){ |
peterknoben | 4:a79f9f3a9e40 | 263 | countx++; |
peterknoben | 0:5f8dee4d4b09 | 264 | } |
peterknoben | 0:5f8dee4d4b09 | 265 | else{ |
peterknoben | 4:a79f9f3a9e40 | 266 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 267 | Number=0; |
peterknoben | 0:5f8dee4d4b09 | 268 | } |
peterknoben | 0:5f8dee4d4b09 | 269 | } |
peterknoben | 0:5f8dee4d4b09 | 270 | else{ |
peterknoben | 0:5f8dee4d4b09 | 271 | Number = 1; |
peterknoben | 4:a79f9f3a9e40 | 272 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 273 | } |
peterknoben | 0:5f8dee4d4b09 | 274 | } |
peterknoben | 0:5f8dee4d4b09 | 275 | else if( mean <=LeftSlowmax and mean>LeftSlowmin) { |
peterknoben | 4:a79f9f3a9e40 | 276 | if (countx <action){ |
peterknoben | 3:f8d57796d69b | 277 | mean = getmean(n, input); |
peterknoben | 0:5f8dee4d4b09 | 278 | if(mean <=LeftSlowmax and mean>LeftSlowmin){ |
peterknoben | 4:a79f9f3a9e40 | 279 | countx++; |
peterknoben | 0:5f8dee4d4b09 | 280 | } |
peterknoben | 0:5f8dee4d4b09 | 281 | else{ |
peterknoben | 4:a79f9f3a9e40 | 282 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 283 | Number=0; |
peterknoben | 0:5f8dee4d4b09 | 284 | } |
peterknoben | 0:5f8dee4d4b09 | 285 | } |
peterknoben | 0:5f8dee4d4b09 | 286 | else{ |
peterknoben | 0:5f8dee4d4b09 | 287 | Number = 2; |
peterknoben | 4:a79f9f3a9e40 | 288 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 289 | } |
peterknoben | 0:5f8dee4d4b09 | 290 | } |
peterknoben | 0:5f8dee4d4b09 | 291 | else if( mean <=RightSlowmax and mean>RightSlowmin) { |
peterknoben | 4:a79f9f3a9e40 | 292 | if (countx <action){ |
peterknoben | 3:f8d57796d69b | 293 | mean = getmean(n, input); |
peterknoben | 0:5f8dee4d4b09 | 294 | if(mean <=RightSlowmax and mean>RightSlowmin){ |
peterknoben | 4:a79f9f3a9e40 | 295 | countx++; |
peterknoben | 0:5f8dee4d4b09 | 296 | } |
peterknoben | 0:5f8dee4d4b09 | 297 | else{ |
peterknoben | 4:a79f9f3a9e40 | 298 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 299 | Number=0; |
peterknoben | 0:5f8dee4d4b09 | 300 | } |
peterknoben | 0:5f8dee4d4b09 | 301 | } |
peterknoben | 0:5f8dee4d4b09 | 302 | else{ |
peterknoben | 0:5f8dee4d4b09 | 303 | Number = 3; |
peterknoben | 4:a79f9f3a9e40 | 304 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 305 | } |
peterknoben | 0:5f8dee4d4b09 | 306 | } |
peterknoben | 0:5f8dee4d4b09 | 307 | else if( mean <=RightFastmax and mean>RightFastmin ) { |
peterknoben | 4:a79f9f3a9e40 | 308 | if (countx <action){ |
peterknoben | 3:f8d57796d69b | 309 | mean = getmean(n, input); |
peterknoben | 0:5f8dee4d4b09 | 310 | if(mean <=RightFastmax and mean>RightFastmin){ |
peterknoben | 4:a79f9f3a9e40 | 311 | countx++; |
peterknoben | 0:5f8dee4d4b09 | 312 | } |
peterknoben | 0:5f8dee4d4b09 | 313 | else{ |
peterknoben | 4:a79f9f3a9e40 | 314 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 315 | Number=0; |
peterknoben | 0:5f8dee4d4b09 | 316 | } |
peterknoben | 0:5f8dee4d4b09 | 317 | } |
peterknoben | 0:5f8dee4d4b09 | 318 | else{ |
peterknoben | 0:5f8dee4d4b09 | 319 | Number = 4; |
peterknoben | 4:a79f9f3a9e40 | 320 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 321 | } |
peterknoben | 0:5f8dee4d4b09 | 322 | } |
peterknoben | 0:5f8dee4d4b09 | 323 | else{ |
peterknoben | 4:a79f9f3a9e40 | 324 | countx=0; |
peterknoben | 0:5f8dee4d4b09 | 325 | Number =0; |
peterknoben | 0:5f8dee4d4b09 | 326 | } |
peterknoben | 0:5f8dee4d4b09 | 327 | return Number; |
peterknoben | 4:a79f9f3a9e40 | 328 | } */ |
peterknoben | 0:5f8dee4d4b09 | 329 | |
peterknoben | 0:5f8dee4d4b09 | 330 | |
peterknoben | 1:15543c143a63 | 331 | // In progress |
peterknoben | 4:a79f9f3a9e40 | 332 | /*int SignalNumber::getmode(const int n, const int action, float input){ |
peterknoben | 1:15543c143a63 | 333 | int mode; |
peterknoben | 3:f8d57796d69b | 334 | mean = getmean(n, input); |
peterknoben | 1:15543c143a63 | 335 | //Check first case |
peterknoben | 1:15543c143a63 | 336 | if( mean < LeftFastmin ) { |
peterknoben | 4:a79f9f3a9e40 | 337 | if (countx <action){ |
peterknoben | 3:f8d57796d69b | 338 | mean = getmean(n, input); |
peterknoben | 1:15543c143a63 | 339 | if(mean < LeftFastmin){ |
peterknoben | 4:a79f9f3a9e40 | 340 | countx++; |
peterknoben | 1:15543c143a63 | 341 | } |
peterknoben | 1:15543c143a63 | 342 | else{ |
peterknoben | 4:a79f9f3a9e40 | 343 | countx=0; |
peterknoben | 1:15543c143a63 | 344 | Number=0; |
peterknoben | 1:15543c143a63 | 345 | } |
peterknoben | 1:15543c143a63 | 346 | } |
peterknoben | 1:15543c143a63 | 347 | else{ |
peterknoben | 1:15543c143a63 | 348 | Number = 0; |
peterknoben | 4:a79f9f3a9e40 | 349 | countx=0; |
peterknoben | 1:15543c143a63 | 350 | } |
peterknoben | 1:15543c143a63 | 351 | } |
peterknoben | 1:15543c143a63 | 352 | return mode; |
peterknoben | 4:a79f9f3a9e40 | 353 | }*/ |
peterknoben | 1:15543c143a63 | 354 | |
peterknoben | 1:15543c143a63 | 355 |