我有一个List<double>
,其中包含许多小数点,小数点后面的值。
该列表用于绘制股票市场的折线图,我想找到峰值点。
这是我的代码:
for (int i = 0; i < list.count-1; i++)
{
if (list[i] > list[i-1] && list[i] < list[i+1])
{
peak.Add(list[i]);
}
}
答案 0 :(得分:0)
假设您在列表中寻找最小值和最大值:
var list = new List<double>(){ 1.1d, 2.2d, 3.3d, 4.4d, 5.5d, 6.6d };
double maxValue = list.Max();
double minValue = list.Min();
答案 1 :(得分:0)
您可以创建当前值大于上一个值和下一个值的索引列表:
var nums = new List<double> {1.1, 1.8, 1.4, 1.9, 1.3, 2.5};
var peakPoints = new List<int>();
for (var i = 1; i < nums.Count - 1; i++)
{
//We start at index 1, because obviously the first value cannot be greater than the previous.
//We also end at the second-to-last value because we can't check further.
if(nums[i] > nums[i - 1] && nums[i] > nums[i + 1])
peakPoints.Add(i);
}
答案 2 :(得分:0)
如果您想从列表中找到峰值点。如 较低 - 较高(峰值) - 较低 ,您可以尝试这种方法。
var nums = new List<double> {0.9, 1.8, 1.1, 1.3, 1.6, 1.9, 2.3, 1.4};
for (int i = 1; i <= nums.Count-1; i++)
{
if (nums[i] > nums[i-1] && nums[i] > nums[i+1])
{
Console.WriteLine(nums[i]);
}
}