rakha asyrofi
/
KNN_coba2
semoga bisa
main.cpp@0:9ae49accf711, 2018-04-15 (annotated)
- Committer:
- asyrofi
- Date:
- Sun Apr 15 04:00:54 2018 +0000
- Revision:
- 0:9ae49accf711
mencoba bisa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
asyrofi | 0:9ae49accf711 | 1 | #include "mbed.h" |
asyrofi | 0:9ae49accf711 | 2 | #include "Serial.h" |
asyrofi | 0:9ae49accf711 | 3 | Serial uart1(USBTX,USBRX); |
asyrofi | 0:9ae49accf711 | 4 | using namespace std; |
asyrofi | 0:9ae49accf711 | 5 | |
asyrofi | 0:9ae49accf711 | 6 | struct Point |
asyrofi | 0:9ae49accf711 | 7 | { |
asyrofi | 0:9ae49accf711 | 8 | int val; |
asyrofi | 0:9ae49accf711 | 9 | double x, y; |
asyrofi | 0:9ae49accf711 | 10 | double distance; |
asyrofi | 0:9ae49accf711 | 11 | |
asyrofi | 0:9ae49accf711 | 12 | }; |
asyrofi | 0:9ae49accf711 | 13 | |
asyrofi | 0:9ae49accf711 | 14 | bool comparison(Point a, Point b) |
asyrofi | 0:9ae49accf711 | 15 | { |
asyrofi | 0:9ae49accf711 | 16 | return (a.distance < b.distance); |
asyrofi | 0:9ae49accf711 | 17 | } |
asyrofi | 0:9ae49accf711 | 18 | |
asyrofi | 0:9ae49accf711 | 19 | int classifyAPoint(Point arr[], int n, int k, Point p) |
asyrofi | 0:9ae49accf711 | 20 | { |
asyrofi | 0:9ae49accf711 | 21 | for (int i = 0; i < n; i++) |
asyrofi | 0:9ae49accf711 | 22 | arr[i].distance = |
asyrofi | 0:9ae49accf711 | 23 | sqrt ((arr[i].x - p.x) * (arr[i].x - p.x) + |
asyrofi | 0:9ae49accf711 | 24 | (arr[i].y - p.y) * (arr[i].y - p.y)); |
asyrofi | 0:9ae49accf711 | 25 | |
asyrofi | 0:9ae49accf711 | 26 | //sort (arr, arr+n, comparison); |
asyrofi | 0:9ae49accf711 | 27 | |
asyrofi | 0:9ae49accf711 | 28 | int freq1 = 0; |
asyrofi | 0:9ae49accf711 | 29 | int freq2 = 0; |
asyrofi | 0:9ae49accf711 | 30 | for (int i = 0; i < k; i++) |
asyrofi | 0:9ae49accf711 | 31 | { |
asyrofi | 0:9ae49accf711 | 32 | if (arr[i].val == 0) |
asyrofi | 0:9ae49accf711 | 33 | freq1++; |
asyrofi | 0:9ae49accf711 | 34 | else if (arr[i].val == 1) |
asyrofi | 0:9ae49accf711 | 35 | freq2++; |
asyrofi | 0:9ae49accf711 | 36 | } |
asyrofi | 0:9ae49accf711 | 37 | |
asyrofi | 0:9ae49accf711 | 38 | return (freq1 > freq2 ? 0 : 1); |
asyrofi | 0:9ae49accf711 | 39 | } |
asyrofi | 0:9ae49accf711 | 40 | |
asyrofi | 0:9ae49accf711 | 41 | int main () |
asyrofi | 0:9ae49accf711 | 42 | { |
asyrofi | 0:9ae49accf711 | 43 | uart1.baud(9600); |
asyrofi | 0:9ae49accf711 | 44 | int n = 17; // Number of data points |
asyrofi | 0:9ae49accf711 | 45 | Point arr[n]; |
asyrofi | 0:9ae49accf711 | 46 | |
asyrofi | 0:9ae49accf711 | 47 | arr[0].x = 1; |
asyrofi | 0:9ae49accf711 | 48 | arr[0].y = 12; |
asyrofi | 0:9ae49accf711 | 49 | arr[0].val = 0; |
asyrofi | 0:9ae49accf711 | 50 | |
asyrofi | 0:9ae49accf711 | 51 | arr[1].x = 2; |
asyrofi | 0:9ae49accf711 | 52 | arr[1].y = 5; |
asyrofi | 0:9ae49accf711 | 53 | arr[1].val = 0; |
asyrofi | 0:9ae49accf711 | 54 | |
asyrofi | 0:9ae49accf711 | 55 | arr[2].x = 5; |
asyrofi | 0:9ae49accf711 | 56 | arr[2].y = 3; |
asyrofi | 0:9ae49accf711 | 57 | arr[2].val = 1; |
asyrofi | 0:9ae49accf711 | 58 | |
asyrofi | 0:9ae49accf711 | 59 | arr[3].x = 3; |
asyrofi | 0:9ae49accf711 | 60 | arr[3].y = 2; |
asyrofi | 0:9ae49accf711 | 61 | arr[3].val = 1; |
asyrofi | 0:9ae49accf711 | 62 | |
asyrofi | 0:9ae49accf711 | 63 | arr[4].x = 3; |
asyrofi | 0:9ae49accf711 | 64 | arr[4].y = 6; |
asyrofi | 0:9ae49accf711 | 65 | arr[4].val = 0; |
asyrofi | 0:9ae49accf711 | 66 | |
asyrofi | 0:9ae49accf711 | 67 | arr[5].x = 1.5; |
asyrofi | 0:9ae49accf711 | 68 | arr[5].y = 9; |
asyrofi | 0:9ae49accf711 | 69 | arr[5].val = 1; |
asyrofi | 0:9ae49accf711 | 70 | |
asyrofi | 0:9ae49accf711 | 71 | arr[6].x = 7; |
asyrofi | 0:9ae49accf711 | 72 | arr[6].y = 2; |
asyrofi | 0:9ae49accf711 | 73 | arr[6].val = 1; |
asyrofi | 0:9ae49accf711 | 74 | |
asyrofi | 0:9ae49accf711 | 75 | arr[7].x = 6; |
asyrofi | 0:9ae49accf711 | 76 | arr[7].y = 1; |
asyrofi | 0:9ae49accf711 | 77 | arr[7].val = 1; |
asyrofi | 0:9ae49accf711 | 78 | |
asyrofi | 0:9ae49accf711 | 79 | arr[8].x = 3.8; |
asyrofi | 0:9ae49accf711 | 80 | arr[8].y = 3; |
asyrofi | 0:9ae49accf711 | 81 | arr[8].val = 1; |
asyrofi | 0:9ae49accf711 | 82 | |
asyrofi | 0:9ae49accf711 | 83 | arr[9].x = 3; |
asyrofi | 0:9ae49accf711 | 84 | arr[9].y = 10; |
asyrofi | 0:9ae49accf711 | 85 | arr[9].val = 0; |
asyrofi | 0:9ae49accf711 | 86 | |
asyrofi | 0:9ae49accf711 | 87 | arr[10].x = 5.6; |
asyrofi | 0:9ae49accf711 | 88 | arr[10].y = 4; |
asyrofi | 0:9ae49accf711 | 89 | arr[10].val = 1; |
asyrofi | 0:9ae49accf711 | 90 | |
asyrofi | 0:9ae49accf711 | 91 | arr[11].x = 4; |
asyrofi | 0:9ae49accf711 | 92 | arr[11].y = 2; |
asyrofi | 0:9ae49accf711 | 93 | arr[11].val = 1; |
asyrofi | 0:9ae49accf711 | 94 | |
asyrofi | 0:9ae49accf711 | 95 | arr[12].x = 3.5; |
asyrofi | 0:9ae49accf711 | 96 | arr[12].y = 8; |
asyrofi | 0:9ae49accf711 | 97 | arr[12].val = 0; |
asyrofi | 0:9ae49accf711 | 98 | |
asyrofi | 0:9ae49accf711 | 99 | arr[13].x = 2; |
asyrofi | 0:9ae49accf711 | 100 | arr[13].y = 11; |
asyrofi | 0:9ae49accf711 | 101 | arr[13].val = 0; |
asyrofi | 0:9ae49accf711 | 102 | |
asyrofi | 0:9ae49accf711 | 103 | arr[14].x = 2; |
asyrofi | 0:9ae49accf711 | 104 | arr[14].y = 5; |
asyrofi | 0:9ae49accf711 | 105 | arr[14].val = 1; |
asyrofi | 0:9ae49accf711 | 106 | |
asyrofi | 0:9ae49accf711 | 107 | arr[15].x = 2; |
asyrofi | 0:9ae49accf711 | 108 | arr[15].y = 9; |
asyrofi | 0:9ae49accf711 | 109 | arr[15].val = 0; |
asyrofi | 0:9ae49accf711 | 110 | |
asyrofi | 0:9ae49accf711 | 111 | arr[16].x = 1; |
asyrofi | 0:9ae49accf711 | 112 | arr[16].y = 7; |
asyrofi | 0:9ae49accf711 | 113 | arr[16].val = 0; |
asyrofi | 0:9ae49accf711 | 114 | |
asyrofi | 0:9ae49accf711 | 115 | /*Testing Point*/ |
asyrofi | 0:9ae49accf711 | 116 | Point p; |
asyrofi | 0:9ae49accf711 | 117 | p.x = 2.5; |
asyrofi | 0:9ae49accf711 | 118 | p.y = 7; |
asyrofi | 0:9ae49accf711 | 119 | |
asyrofi | 0:9ae49accf711 | 120 | // Parameter to decide groupr of the testing point |
asyrofi | 0:9ae49accf711 | 121 | while(1) |
asyrofi | 0:9ae49accf711 | 122 | { |
asyrofi | 0:9ae49accf711 | 123 | wait(0.1); |
asyrofi | 0:9ae49accf711 | 124 | int k = 3; |
asyrofi | 0:9ae49accf711 | 125 | uart1.printf ("The value classified to unknown point" |
asyrofi | 0:9ae49accf711 | 126 | " is %d.\n", classifyAPoint(arr, n, k, p)); |
asyrofi | 0:9ae49accf711 | 127 | //return 0; |
asyrofi | 0:9ae49accf711 | 128 | } |
asyrofi | 0:9ae49accf711 | 129 | |
asyrofi | 0:9ae49accf711 | 130 | } |