Exemplo n.º 1
0
        public DoubleSeries GetDampedSinewave(int pad, double amplitude, double phase, double dampingFactor, int count, int freq = 10)
        {
            var doubleSeries = new DoubleSeries(count);

            for (var i = 0; i < pad; i++)
            {
                var time = 10 * i / (double)count;
                doubleSeries.Add(new XyPoint {
                    X = time
                });
            }

            for (int i = pad, j = 0; i < count; i++, j++)
            {
                var xyPoint = new XyPoint();

                var time = 10 * i / (double)count;
                var wn   = 2 * Math.PI / (count / (double)freq);

                xyPoint.X = time;
                xyPoint.Y = amplitude * Math.Sin(j * wn + phase);
                doubleSeries.Add(xyPoint);

                amplitude *= 1.0 - dampingFactor;
            }

            return(doubleSeries);
        }
Exemplo n.º 2
0
        public void SetFourierSeries(DoubleSeries series, double amplitude, double phaseShift, int count)
        {
            for (var i = 0; i < count; i++)
            {
                var xyPoint = new XyPoint();

                var time = 10.0 * i / count;
                var wn   = 2 * Math.PI / count * 10;

                xyPoint.X = time;
                xyPoint.Y = Math.PI * amplitude *
                            (Math.Sin(i * wn + phaseShift) +
                             0.33 * Math.Sin(i * 3 * wn + phaseShift) +
                             0.20 * Math.Sin(i * 5 * wn + phaseShift) +
                             0.14 * Math.Sin(i * 7 * wn + phaseShift) +
                             0.11 * Math.Sin(i * 9 * wn + phaseShift) +
                             0.09 * Math.Sin(i * 11 * wn + phaseShift));

                series.Add(xyPoint);
            }
        }