MATLAB 实现轨迹分类(路径、曲线分类)

1 . 题目要求:对用户轨迹进行分类,相同或相近的轨迹归为一类

背景:多个人在操场上随意散步。从用户进入操场到离开操场记录下他每步踩下的坐标(x,y)
假设他共走了n步,把他经过的全部坐标按序记录下来,就是他的运动轨迹:(x1,y1) (x2,y2),…(xn,yn)
要求把全部M个人的轨迹分类,相同或相近的轨迹归为一类。

注意:每个人的步数可能不一样,步距也可能步一样,进入和离开操场的地点都是随意的。

输入:M个人轨迹;相近轨迹距离最大值;XXX参数,……
输出:若干个分类(每类包含的路径)
算法:常规算法,分类/聚类算法,……

例如:这样的运动轨迹图
在这里插入图片描述

2 . 轨迹分类思想

  首先,我们要获取用户的这些轨迹点,即每个用户都会对应一个轨迹点集(可以用二维数组,结构体等实现),将这些轨迹点连接成线,就可以绘制出如上的轨迹曲线。
  然后,我们要求每条轨迹曲线间的距离。在计算之前,我们需要先自己拟定一个计算两条轨迹曲线间距离的方法。自己是这样计算的,比如有两条曲线,曲线A 和 曲线B,我们计算曲线A和B间的距离,可以先通过计算曲线A上的一点a1,到曲线B上所有点的欧式距离最小的距离,作为曲线A上点a1到曲线B的距离。然后,同样按照这种方法,可以计算出曲线A上其余轨迹点a2, a3, … , an到曲线B的距离。最后,我们将这些距离的平均值作为曲线A到曲线B的距离。
​  通过以上方法,我们就可以求得所有曲线间的距离,并可以得到一个距离矩阵。接着我们就需要来分析这个距离矩阵,并加上认为设定的阈值,一起作为曲线分类的判别条件。
  比如:我们计算了曲线A到其余曲线的距离,然后找到了这些距离中的最小值,并将其与阈值进行比较,若比阈值大,则将曲线A自己单独归为一类;若比阈值小,则将曲线A与相距那条的曲线归为一类。通过以上过程,我们就可以成功的将这些轨迹曲线进行分类,并输出最终分类结果。

3 . 程序设计思想

在这里插入图片描述

4 . MATLAB代码实现

%% Homework of Advanced software development technology and tools 
% Creation         :    17-Oct-2017
% Last Reversion   :    21-Oct-2017
% Author           :    Lingyong Smile {
   
   smilelingyong@163.com}
% File Type        :    Matlab
% -------------------------------------------------------------------------
% Lingyong Smile @ 2017
% 
% 作业要求:
%     对用户轨迹进行分类,相同或相近的轨迹归为一类
% 背景:多个人在操场上随意散步。从用户进入操场到离开操场记录下他每步踩下的坐标(x,y)
% 假设他共走了n步,把他经过的全部坐标按序记录下来,就是他的运动轨迹:(x1,y1) (x2,y2),(xn,yn)
% 要求把全部M个人的轨迹分类,相同或相近的轨迹归为一类。
% 注意:每个人的步数可能不一样,步距也可能步一样,进入和离开操场的地点都是随意的。
% 输入:M个人轨迹;相近轨迹距离最大值;XXX参数,……
% 输出:若干个分类(每类包含的路径)
% 算法:常规算法,分类/聚类算法,……


%% Init
clc;
clear;
close all;

% 设置阈值
MAX_DISTENCE = 0.08;

%% 手动绘制每个用户的轨迹点并记录下来,然后画出运动轨迹(用直线依次连
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值