iphone - 以编程方式分析折线图

标签 iphone ios algorithm graph analysis

我得到了一个折线图,其中 Y 轴为值,X 轴为时间。 X 轴有 5 分钟分辨率。我正在寻找某种算法来帮助我教 iPhone 了解线路的去向。我从来没有上过算法课,所以任何帮助将不胜感激。我需要知道的是这条线是否已经连续上升了一定数量的线段。

现在我正在实现以下内容: 如果当前数据点的 Y 值大于前一个,则将斜率计数器加一。如果相等,则将斜率计数器递增 0。如果值较小,则将斜率计数器递减。

if(current>previous)
{
  counter++;
}
else if(current<previous)
{
  counter--;
}

这会生成锯齿状的图形,更易于分析。但是由于窗口大小的问题,图形可能会“弹跳”。这是我预计我的逻辑会出现问题的地方。

我希望有某种 CS 算法可以帮助我完成这项任务,因为我什至不知道要为这个问题在 google 中输入什么样的关键字。

最佳答案

如果您只需要知道线条是否连续上升一定数量的线段,为什么不使用一个计数器递增直到达到一定数量的线段,或者在线下降时重置,例如:

int counter = 0;
for (int i = 1; i < datasize; i++) {
  if (data[i] > data[i - 1]) {
    ++counter;
    if (counter == THRESHOLD) {
      println("trending up at %d.", i);
    }
  } else if (data[i] < data[i - 1]) {
    counter = 0;
  }
}

如果您只是想看看这条线总体上是呈上升趋势还是下降趋势,您可以这样做吗:

if (data[datasize - 1] > data[0]) {
  println("Overall trend is up.");
} else if (data[datasize - 1] < data[0]) {
  println("Overall trend is down.");
} else {
  print("Overall trend is flat.");
}

如果您想要更好的预测——比如,这是到这个时间点的排队情况,这是对 future 情况的猜测,有两种探索途径。第一个是“回归分析”或“回归线”。这最适合随着时间的推移通常会增加或减少的数据,并且会让您了解这些增加或减少的速率(直线的平均斜率)。

第二个是“快速傅立叶变换”——这对于像波浪一样的线很有用,因为它们停留在最小和最大界限之间并且有一些规则循环(或许多规则循环,这就是等式会占卜)。

玩得开心。这是一个令人愉快的问题。

关于iphone - 以编程方式分析折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022887/

相关文章:

iPhone - 系统字符串未在设备上本地化

ios - react-native ios,如何在内存不足的情况下从缓存中释放本地镜像?

ios - 使用 jQuery Mobile 在 iOS 上缓慢滚动

python - 在整数的大整数文件中查找中位数

algorithm - 我找到了这个Big-O notation calculation的两个答案,哪个是正确的

iphone - 通过带有纬度/经度的 URL 在 iPhone 中打开 "Maps"时关闭反向地理编码。范围

iphone - iOS 自定义表情

ios - CloudKit 公共(public)记录和更改未下载

algorithm - 以下斐波那契数列程序的时间复杂度是多少?代码使用动态规划

iphone - 如何获得 iPhone OS 3.1 低沉的键盘声音?