我正在研究一种方法,该方法应该决定曲线是否具有几乎恒定的斜率.
当然有x,y涉及的要点.到目前为止我所做的是将y每个数据点除以它x以得到该数据点的斜率.我把这个斜坡存放在一个List<double>
我认为到目前为止我走在正确的轨道上(请告诉我,如果我不是!).现在是时候决定是否处理一个恒定的曲线,所以我最终得到了以下方法:
private bool IsConstantSlope(List<double> slopes)
{
var max = slopes.Max();
var min = slopes.Min();
var diff = max - min;
return (diff > 0.01) ? false : true;
}
Run Code Online (Sandbox Code Playgroud)
那么我在这里检查斜率的最大值和最小值并将其与我相信的自定义阈值进行比较并不是很好.
这种方法适用于完美恒定的斜线,但我想给它一些灵活性,我不认为将最大值和最小值的差值与常数进行比较是一种很好的做法.
我会更多的想法!
有x,y点资源.到目前为止我所做的是将每个数据点的y除以x,得到该数据点的斜率.我把这个斜坡存放在一个清单中
严格来说,一个点没有斜率,你在这里测量的是连接点(x,y)和点(0,0)的直线的斜率.因此,如果您为一组有序的点执行此操作,那么使用单行的概念就不太正确了.你甚至没有一组连接相邻点的线斜坡.也在你的功能
return (max > 0.01) || (min < -0.01);
Run Code Online (Sandbox Code Playgroud)
如果您的阈值是0.01,则更好.
如果你真正想要的是一条拟合或接近点集的线,那么你首先需要对你的数据进行某种直线回归,并测试这条近似线的梯度,看它是否在你的阈值范围内.
这可能是一个有用的阅读http://en.wikipedia.org/wiki/Simple_linear_regression
或者,您可以按x值排序点,然后计算每个连续对之间的斜率(有效生成折线)并将其存储在列表中,然后使用斜率比较函数.
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |