2017年全国大学生电子设计大赛I题可见光定位问题,本方法提供一种基于位置指纹的无线定位思路,需要离线构建无线指纹库(信号强度构成的向量与对应位置标签),再用机器学习算法,例如KNN进行定位,由于比赛只允许在单片机上运行,因此针对比赛用C改写了一个可直接在单片机裸机上运行的KNN算法。
2.为什么要用C
因为诸于python等高级语言编写的机器学习代码需要有操作系统支持,而一般意义上的单片机无法运行Linux,Windows等可以支持高级语言的操作系统,因此需要使用单片机裸机或者ucOS可以支持的C 语言进行改写。
/***********************************
Author: ML_SDD
T: 2017.8.12
***********************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define A_L 81
//Map这个二位数组用来保存测量好的[RSS1,RSS2,RSS3,X,Y]
unsigned char Map[A_L][