/// <summary> /// Отрисовка сегмента /// </summary> private void DrawSegment() { segmentPoints = DigitalSignalsGenerator.GetHarmonicSignal(segment.Harmonics, int.Parse(textBoxQstDiscFr.Text), int.Parse(textBoxQstTotalTime.Text)); if (chartQstSegment.Series != null) { chartQstSegment.Series.Clear(); } chartQstSegment.Series.Add("PolyHarmonic"); chartQstSegment.Series["PolyHarmonic"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; chartQstSegment.Series["PolyHarmonic"].Color = Color.LimeGreen; chartQstSegment.Series["PolyHarmonic"].BorderWidth = 2; chartQstSegment.Series["PolyHarmonic"].IsVisibleInLegend = false; chartQstSegment.Series["PolyHarmonic"].Points.DataBindY(segmentPoints); }
/// <summary> /// Выполнение сегментации исходного сигнала /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ButtonGetQstSegments_Click(object sender, EventArgs e) { if (qstNoizebleSignalPoints == null || qstNoizebleSignalPoints.Count() == 0) { MessageBox.Show("Выполните зашумление исходного сигнала", "Ошибка!"); return; } Meta.Numerics.Statistics.BivariateSample bevar = new Meta.Numerics.Statistics.BivariateSample(); Dictionary <string, SignalUtilities.SegmentBounds> bounds = new Dictionary <string, SignalUtilities.SegmentBounds>(); int discfrecuency = int.Parse(textBoxQstDiscFr.Text); foreach (var segment in qstSignal) { var segmentPoins = DigitalSignalsGenerator.GetHarmonicSignal(segment.Harmonics, discfrecuency, segment.Time); var segmentBounds = SignalUtilities.GetSegment(qstNoizebleSignalPoints, segmentPoins); bounds.Add(segment.Name, segmentBounds); } DrawSegmentsAttributes(bounds, chartQstSignal); }
/// <summary> /// Отрисовка полигармонического сигнала /// </summary> private void DrawPolyHarmonicSignal() { try { polyHarmonicPoints = DigitalSignalsGenerator.GetHarmonicSignal(harmonics, totalSamplingFrequency, totalTime); chartModlingResults.Series.Add("PolyHarmonic"); chartModlingResults.Series["PolyHarmonic"].ChartType = SeriesChartType.Spline; chartModlingResults.Series["PolyHarmonic"].Color = Color.LimeGreen; chartModlingResults.Series["PolyHarmonic"].BorderWidth = 2; chartModlingResults.Series["PolyHarmonic"].IsVisibleInLegend = false; double x = 0; foreach (var p in polyHarmonicPoints) { chartModlingResults.Series["PolyHarmonic"].Points.AddXY(x, p); x += dT; } } catch (Exception ex) { MessageBox.Show($"{ex.Message} [{ex.TargetSite.Name}]"); } }