Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 以编程方式分析线图_Iphone_Ios_Algorithm_Graph_Analysis - Fatal编程技术网

Iphone 以编程方式分析线图

Iphone 以编程方式分析线图,iphone,ios,algorithm,graph,analysis,Iphone,Ios,Algorithm,Graph,Analysis,我得到了一个线图,Y轴有值,X轴有时间。X轴的分辨率为5分钟。我正在寻找某种算法来帮助我教iPhone理解线路走向。我从来没有上过算法课,所以任何帮助都将不胜感激。我需要知道的是,这条线是否连续上升了一定数量的线段 现在,我正在实施以下内容: 如果当前数据点的Y值大于上一个数据点,请将坡度计数器增加1。如果相等,则将坡度计数器增加0。如果该值较小,则减小斜率计数器 if(current>previous) { counter++; } else if(current<previo

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

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

if(current>previous)
{
  counter++;
}
else if(current<previous)
{
  counter--;
}
if(当前>上一个)
{
计数器++;
}

否则,如果(当前如果您需要知道的只是直线是否连续上升了一定数量的线段,为什么不让计数器不断增加,直到达到一定数量的线段,或者在直线下降时重置,如:

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;
  }
}
int计数器=0;
对于(int i=1;i数据[i-1]){
++计数器;
如果(计数器==阈值){
println(“在%d.时呈上升趋势”,i);
}
}else if(数据[i]
如果你只是想看看这条线的总体趋势是上升还是下降,你能这样做吗:

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.");
}
if(数据[datasize-1]>data[0]){
println(“整体趋势上升”);
}else if(数据[datasize-1]<数据[0]){
println(“整体趋势下降”);
}否则{
印刷品(“总体趋势持平”);
}
如果你想要更好的预测——比如,这是到目前为止的预测,这是对未来的预测,有两种方法可以探索。第一种是“回归分析”或“回归线”。这将最适用于通常随时间增加或减少的数据,并将获得这些增加或减少的速率(直线的平均坡度)

第二种是“快速傅里叶变换”——这对类似波的线很有用,因为它们保持在一个最小值和一个最大值之间,并且有一些规则的周期(或者有一些规则的周期,这就是方程所描述的)


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

你可能要寻找的是一条与你的数据很好的直线匹配(在一个最小二乘意义上)。这条直线的斜率可能会帮助你判断“它要去哪里”,这取决于基础模型的行为。

通过“反弹”,你是说这条线撞到了地板/天花板并反射回来了吗?还是它们偏离了尺度?通过阅读标题和你的Q的前半部分,我想到的关键词是“时间序列”,“趋势”,就像那样。基本上它读取时间序列数据,并尝试猜测它的走向,或者尝试消除额外的弹性。另一个预测算法家族ms包括这样的东西-你可能只需要复制公式,这将需要更多的工作来实现。双指数平滑可能会有所帮助,尽管在我的例子中,它可能会扭曲测量,因为它“超调”。我已经在其他地方使用了卡尔曼滤波器,我将看看如何将其应用于这个问题。自动递增计数器代码与我已有的非常相似。我遇到的一个问题是,在视觉上,我可以看到图形何时上升,并有轻微的不规则(1步下降,3步上升,等等)。这将重置上面的算法。双经验平滑将使其平滑,但我的信号峰值太不可预测,无法正确设置a和b值,iirc。是的,FFT是我已经研究了几周的东西。它是一个深渊。需要正确的窗口大小、窗口函数,这是一个怪物。很难理解,即使我有做FFT的代码,如果没有正确的采样率,会有无限的频谱泄漏,这是非常有用的:(