/// <summary> /// 计算主频 /// </summary> public void SetMainVibra() { var maxPeakLine = PeakDots.ElementAt(0).Key; var maxPeakValue = PeakDots.ElementAt(0).Value; FeatureInfo.FtName?ftName = null; foreach (var feature in Features) { if (maxPeakLine == feature.Line) { ftName = feature.Name; } } MVF = new MainVibraFrequency { Value = maxPeakValue, Feature = ftName }; }
/// <summary> /// 计算峰值点 /// </summary> private void SetPeakDots() { PeakDots.Clear(); for (int i = 1; i < AxisX.LineCount; i++) { if (i <= 1 || i >= AxisX.LineCount - 1) { continue; } var curDot = Data[i]; var prevDot = Data[i - 1]; var nextDot = Data[i + 1]; if (curDot > prevDot && curDot > nextDot) { PeakDots.Add(i, Data[i]); } } //按峰值从高到低排序 PeakDots = PeakDots.OrderByDescending(p => p.Value).ToDictionary(o => o.Key, o => o.Value); }