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); }
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); } }