【问题标题】:How can i detect the places when the red line starting to move over/above the black line?当红线开始在黑线上方/上方移动时,我如何检测到这些地方?
【发布时间】:2012-11-19 15:28:42
【问题描述】:

或者我如何检测红线何时开始上升/倾斜/爬升?

我有这个代码:

for (int i = 0; i < averagesOriginal.Count - 69; i++)
            {
                int y = i + 35;
                if (averagesOriginal[y] <= resultings[i])
                {
                    if (averagesOriginal[y] >= resultings[i])
                    {
                        //MessageBox.Show("above");
                    }
                }
            }

平均值原始列表显示图表中的红线,结果列表显示黑线。 我需要找到红线开始爬上黑线的地方。 我附上了一张显示红线和黑线的图表图像,并用黑色圆圈标记了我认为应该是它开始的地方。

我认为左边的两个小球应该是红线开始爬上黑线的地方。

我需要找到图表中所有地方的索引(以及每个索引中的数字),从这些地方它开始爬上黑色。

我不需要黑色之上的所有红色,只需要它开始的地方。

应该是两个索引。

条件应该是:第一个索引是红色在黑色下面的位置,然后在下一个单个索引向前它应该在黑色之上。

如果您查看开头的图表,红色始终位于黑色下方。 我需要以某种方式找到红色在黑色下方的位置,并且在下一个单一索引中红色在黑色上方。这意味着红色开始攀升。

那么我该如何根据我的代码来做呢?

(在附加的图像中,我绘制的左侧两个黑色圆圈显示了黑色下方的第一个红色索引,然后下一个红色索引位于黑色上方。这是我应该搜索的地方。

【问题讨论】:

  • 我现在很困,但我认为内部 if 语句与外部 if 无关。
  • 从图像上看,红色在 150、161 和 170 处爬过黑色

标签: c# graph plot


【解决方案1】:

您可以保留一个标志来跟踪线路当前的位置,并在它通过时翻转标志。

bool isRedBelow = averagesOriginal[0] < resultings[0];

for (int i = 0; i < averagesOriginal.Count - 69; i++)
{
    int y = i + 35;

    if (isRedBelow && averagesOriginal[y] > resultings[i])
    {
        isRedBelow = false;
        MessageBox.Show("Red is now above");
    }
    else if (!isRedBelow && averagesOriginal[y] < resultings[i])
    {
        isRedBelow = true;
        MessageBox.Show("Red is now below");
    }
}

当线交叉时,旗帜翻转。这使您可以继续抓住每个翻转,无论有多少。

我故意不处理equal 案例(&gt;=&lt;=),因为我不太确定您想要什么;可能是一个安全的假设,如果它们相等,那是因为它正在交叉的过程中,但我不确定你是否会遇到它们相等但红线在那一刻反转方向的情况.我会把它留给你。

另外,在最初的isRedBelow 分配中,我没有检查数组是否有Length &gt; 0,但我猜这不是问题(如果是,你可以修复它)

如果管理isRedBelowfalse/true 状态令人困惑,请随意用枚举替换它,可能类似于:

enum RedLinePosition
{
    BelowBlack,
    AboveBlack,
    EqualToBlack //if necessary
}

编辑:我不太确定- 69for 循环或int y = i + 35 偏移中发生了什么;我猜这些超出了问题的范围。但我假设偏移量是为了补偿 averagesOriginalresultings 没有排列它们的元素。如果averagesOriginal[N]resultings[N] 应该代表图形上X = N 点处两条线的Y 坐标,那么我建议您在此处修复循环索引,以便它们匹配。

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2013-10-31
    相关资源
    最近更新 更多