Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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}]");
            }
        }