我有一个.wav文件,我正在使用ZedGraph绘制波形.我正在计算每秒的.wav文件的能量,如果能量小于4,我想用不同的颜色绘制样本.我创建了两个PointPairLlist
并且LineItem
这样做但是在合并这两个列表时存在问题.这是我的代码以及我的图表的显示方式.
LineItem myCurveAudio; LineItem myCurveAudio2; PointPairList list1 = new PointPairList(); PointPairList list2 = new PointPairList(); while(true) { for (int i = 0; i < fmainBuffer.Length; i++) { float segmentSquare = fmainBuffer[i] * fmainBuffer[i]; listOfSquaredSegment.Add(segmentSquare); } float energy = (float)Math.Sqrt(listOfSquaredSegment.Sum()); if (energy < 4) { for (int i = 0; i < read; i += (int)window) { list1.Add((float)(count / ((float)read / (float)window)), fmainBuffer[i]); count++; } } else { for (int i = 0; i < read; i += (int)window) { list4.Add((float)(count / ((float)read / (float)window)), fmainBuffer[i]); count++; } } } zgc.MasterPane.PaneList[1].XAxis.Scale.MaxAuto = true; zgc.MasterPane.PaneList[1].XAxis.Scale.MinAuto = true; zgc.MasterPane.PaneList[1].XAxis.Type = AxisType.Linear; zgc.MasterPane.PaneList[1].XAxis.Scale.Format = ""; zgc.MasterPane.PaneList[1].XAxis.Scale.Min = 0; myCurveAudio = zgc.MasterPane.PaneList[1].AddCurve(null, list1, Color.Lime, SymbolType.None); myCurveAudio2 = zgc.MasterPane.PaneList[1].AddCurve(null, list4, Color.Red, SymbolType.None);
myCurveAudio和myCurveAudio2的线条如图所示相交.
如何合并这两个列表以防止这些交叉点?
我也尝试将`double.NaN添加到列表的末尾,但它不起作用.