楼主:
jackhzt (巴克球)
2016-03-22 11:35:25[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:piecewise linear approximation(PLA)
目的:使用线性的方式,切割一个序列 ( 时间序列)
目标方法: 简单来说连结起点和终点, 依时间依序比较点和线的距离
太大就将点和终点连线, 以新的线再依序和接下来的点比距离, 重复做
以下是原文叙述:
http://imgur.com/eUcKxg6
http://imgur.com/BLbYeyJ
问题:
(step1):
Input time series Q(i : j) and threshold value "error". A vector Bp
is used to restore the breakpoints. "k" records the number of
the present breakpoints. "pos" denotes the position of the
newest breakpoint.
Initially, i = 1, j = m, where m is the length of time series.
Since the first point and the last point
are the special breakpoints, let k = 2, Bp(1) = q1 and
Bp(2) = qm.
(step2):
For time series Q(i : j), create line segment L(i : j) according
to the formula (6). Set two variables l = i + 1 and
best_so_far = 0. *公式6在我的程式码中有付
(step3):
Calculate the distance of point ql to the line segment L(i : j),
that is D(ql,L(i : j)).
(step4):
If D(ql,L(i : j)) > best_so_far, best_so_far = D(ql,L(i : j)) and
pos = l.
(step5):
l = l + 1. If l>=j, go to the step 6; otherwise, go back to step3.
(step6):
If best_so_farPe, k = k + 1, Bp(k) = q_pos, go back to the Step
2 and let the two subsequences Q(i : pos) and Q(pos : j)
redo the step 2 to step 6, respectively.
(step7):
Sort the element of vector Bp by an ascending time and
output the sorted result.
出自:http://tinyurl.com/hhosdmk -3.1
1.我的程式码看起来有点问题,尤其是step 6这地方不太会表示,有高手可以解惑吗?
2.有没有比较正常的打法?我的打法好像问题很大
3.package方面有试过一些,但是有办法表达和上面叙述一样的package目前好像没找到
程式码可贴于以下网站: http://ideone.com/TOEISf
求高手救援