找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1030|回复: 15

[其他] 万能家电版,,专业问题又来了。。。

[复制链接]
发表于 2013-1-11 16:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
本帖最后由 sobranie_1 于 2013-1-11 15:50 编辑

MATLAB问题

比如我现在手头有一组GPS点的数据,是汽车传感器记录下来的,比如a(14.56  ,  51.33)b(14.57  ,  51.66)这样子,每秒记录一次,一组数据有20个点这样,我该如何用这些点的位置来判断出汽车是处于直行呢还是转弯呢??行驶方向可以通过2个点的经度纬度分别相减来判别。

之前我的算法太幼稚太NAIV了,我在判断出汽车的方向后,分别给这8个方向代入了1个数,比如东北方向是3,西南是5,然后来判断汽车是左转还是右转还是直行,说穿了就是根据汽车的行驶方向改变来判断。像这样的算法只能判定非常典型的十字路口转弯,因为90°变向嘛,但是有些特定情况就不行了,但是比如汽车从东北10°往东北70°转弯,我的程序就不知道了,因为方向没变。

现在我是想用斜率的变化率来判别汽车是否直行还是转弯,但是觉得很复杂,还在思考中,

有人能给我随便出个点子吗??一个思路也好。


Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2013-1-11 16:47 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 16:53 | 显示全部楼层
你都有行驶方向了,怎么会计算不出转向.....
不过你行驶方向的计算也太粗糙了.....

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 17:07 | 显示全部楼层
本帖最后由 老湿不给力 于 2013-1-11 16:29 编辑

建立一个puffer,每获得一个gps数据,就把纬度坐标除经度坐标,把结果跟puffer里的数据比较,如果相同就是直行,如果不同就表示汽车拐弯了,然后把最新的数据存到puffer里,让下一组再来比较。
a(14.56  ,  51.33)b(14.57  ,  51.66)
a: 51.33/14.56=3.525
b: 51.66/14.57=3.545
基本可以判断车子拐了

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 17:10 | 显示全部楼层
本帖最后由 JonnySun 于 2013-1-11 23:29 编辑

这是我的第一想法:直走的话各坐标的变化率应该大体相同,或者说在一个Toleranz里,你可以用类似即时变化值和平均变化值相比,时间单位10秒一个间隔(如果GPS更新够快),不超过最大变化值为直行,超过最大变化值数值为正则是左拐,反之又拐,若是反向行使的话就用另外一个大case倒过来判断,有必要的话要建立矩阵来模拟GPS坐标

想法2:两坐标建立向量,求夹角,然后你直接设一个边界角度,绝对值大于了就是拐弯了,正负判断左右拐弯

v1=[14.57-14.56 , 51.66-51.33];%示范一下,具体赋值和获取值需要你自己规划
v2=[X-14.57 , Y-51.66];
aa = acos(dot(v1, v2)/(sqrt(sum(v1.^2))*sqrt(sum(v2.^2))));
aa = angle(complex(14.57-14.56 , 51.66-51.33)) - angle(complex(X-14.57 , Y-51.66)) ;
subspace(v1', v2')

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 17:18 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 17:48 | 显示全部楼层
总得有个定义吧,什么时候算abbiegen,什么时候只能算是kurve?

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 21:52 来自手机 | 显示全部楼层
劈马甲 发表于 2013-1-11 16:48
总得有个定义吧,什么时候算abbiegen,什么时候只能算是kurve?

还有换道也得考虑

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 22:53 | 显示全部楼层
就是一串向量啊,第二个向量(a+b)减去第一个向量(a)=(b),然后求(a)(b)夹角就可以了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 22:56 | 显示全部楼层
然后嫩这个最好先Extrapolation一下,然后把之前采样点和extrapolieren出来的点做一下smooth,好补偿GPS的误差

或者用别的算法也可以

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-11 23:00 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-12 00:35 来自手机 | 显示全部楼层
行驶方向都有了,判断转向不是很显然的吗?
你先用经纬度计算出每一个坐标点的行驶方向,用角度表示(0-360),如果角度有跨过0/360,要减去360防止角度不连续。由角度的初末值可以知道有没有转向。然后对角度差分,设定一个误差值,比如小于1度,认为是误差或者换道。每次差分出现大于1度正值,就是左转向,反之右转向。

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-12 00:39 来自手机 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-12 11:51 | 显示全部楼层
我的任务就是,比如说给我1000组车载GPS点在过十字路口时候的PUNKT信息,我用matlab直接可以表示出这1000组数据里,哪些是车子左转,右转,或者直行。

行驶方向都有了,判断转向不是很显然的吗?
你先用经纬度计算出每一个坐标点的行驶方向,用角度表示(0-360),如果角度有跨过0/360,要减去360防止角度不连续。由角度的初末值可以知道有没有转向。然后对角度差分,设定一个误差值,比如小于1度,认为是误差或者换道。每次差分出现大于1度正值,就是左转向,反之右转向。


谢谢deadsee,我其实也是这么想的,但是我又考虑到有些道路是弯的,比如彩虹型的道路,那这样的话在过十字路口之前可能matlab就会判断他在转弯了,,关键这个值有点难设定。

谢谢各位帮忙,感激不尽,我还在考虑怎么做
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-12 11:59 | 显示全部楼层
这个取起始点,中点和终点gps坐标,做一个简单的比较不就完了么。

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2013-1-12 12:03 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-9-6 05:55 , Processed in 0.102293 second(s), 41 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表