可在单片机上运行的机器学习算法KNN(C语言实现)
来源:互联网 发布:郭襄 金轮法王 知乎 编辑:程序博客网 时间:2024/06/05 03:03
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][5] = {};int Dis[A_L][3];//Dis的元素分别为RSS的距离,X,Y的坐标int k = 3;//初始K=3为找最近的3个样本unsigned char Input[3]={0};//这里是初始化,要放的是AD做完转换后的RSS数据//全局变量用于保存x,y的数据,以便使用unsigned char result_x = 0;unsigned char result_y = 0;unsigned char knn_predict(unsigned char *Input){ unsigned char i,j,n,p;//for循环控制变量 unsigned char temp_dis,temp_x,temp_y;//数据暂存变量,冒泡排序用 unsigned char result_sum_x = 0; unsigned char result_sum_y = 0; for(i=0;i<A_L;i++) { Dis[i][0] = sqrt((Map[i][0]-Input[0])^2 + (Map[i][1]-Input[1])^2 + (Map[i][2]-Input[2])^2); Dis[i][1] = Map[i][3]; Dis[i][2] = Map[i][4]; } //冒泡排序 for(j=0;j<A_L-1;j++) { for(n=0;n<A_L-j-1;n++) { if(Dis[n][0]>Dis[n+1][0]) { temp_dis = Dis[n][0]; Dis[n][0] = Dis[n+1][0]; Dis[n+1][0] = temp_dis; //------------------ temp_x = Dis[n][1]; Dis[n][1] = Dis[n+1][1]; Dis[n+1][1] = temp_x; //------------------ temp_y = Dis[n][2]; Dis[n][1] = Dis[n+1][2]; Dis[n+1][2] = temp_y; } } } for(p=0;p<k;p++) { result_sum_x = result_sum_x + Dis[p][1]; result_sum_y = result_sum_y + Dis[p][2]; } result_x = result_sum_x / k; result_y = result_sum_y / k;}
阅读全文
0 0
- 可在单片机上运行的机器学习算法KNN(C语言实现)
- 机器学习算法的R语言实现(一):KNN
- 【机器学习算法】之KNN算法的实现
- 机器学习(KNN算法)
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 【Machine Learning】KNN学习算法与C语言实现
- [机器学习]KNN算法的理解与具体实现
- 机器学习---opencv实现简单的KNN算法
- 机器学习算法的python实现(1)---k近邻算法(kNN)
- 机器学习:KNN算法(MATLAB实现)
- Python机器学习(二)--kNN算法实现
- 机器学习之PYTHON实现KNN算法
- 机器学习KNN算法原理及实现
- 【机器学习】使用python实现kNN算法
- 机器学习KNN python算法实现
- 机器学习之KNN算法python实现
- appium+python官方sample code(四)
- bzoj 3555: [Ctsc2014]企鹅QQ hash
- 基于QEMU的ARM Cortex-A9开发板Vexpress-ca9的Linux内核的编译和运行
- Linux下的安装Maven及环境配置
- Node.js——fs模块
- 可在单片机上运行的机器学习算法KNN(C语言实现)
- 如何将自己的jar包加载到本地库
- Visual Studio 2013 + OpenCV2.4.13 从x86架构切换至x64架构
- windows下mysql数据库的基本使用
- 1640: [Usaco2007 Nov]Best Cow Line 队列变换
- 依赖Jetty实现流转发功能的实践
- java自己实现单链表的基本操作
- 基础控件——TextView
- UVa 1587 Box