Benutzer mit den meisten Antworten
Dynamic Data Display - Zweiter Graph

Frage
-
Hallo zusammen,
ich habe mir gestern mal Dynamic Data Display angeschaut und auch mal etwas rumprobiert.
Nun möchte ich einen zweiten Graphen hinzufügen. Dafür habe ich diesen Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Microsoft.Research.DynamicDataDisplay.DataSources; using Microsoft.Research.DynamicDataDisplay; using AForge.Math; namespace Graph { /// <summary> /// Interaktionslogik für MainWindow.xaml /// </summary> public partial class MainWindow : Window { public static int MaxSamples = 64; public static DataPointCollection DataPoint = new DataPointCollection(); public static DataPointCollection DataPoint2 = new DataPointCollection(); public static Complex[] Signal = new Complex[MaxSamples]; public static Complex[] Spektrum = new Complex[MaxSamples]; public MainWindow() { InitializeComponent(); } private void DataWindow_Initialized(object sender, EventArgs e) { GenerateSineSamples(DataPoint, MaxSamples, 1.0); PlotData(DataPoint, Colors.Green, "Signal"); //FourierTransform.FFT(Signal, FourierTransform.Direction.Forward); /*for (int Sample = 0; Sample < MaxSamples; Sample++) { DataPoint.Add(new DataPoint(Signal[Sample].Im, Sample)); }*/ GenerateCosineSamples(DataPoint2, MaxSamples, 2.0); PlotData(DataPoint2, Colors.Red, "Spektrum"); } private void PlotData(DataPointCollection Data, Color Farbe, string Name) { var DataList = new EnumerableDataSource<DataPoint>(Data); DataList.SetXMapping(x => x.X); DataList.SetYMapping(y => y.Y); plotter.AddLineGraph(DataList, Farbe, 2, Name); } void GenerateSineSamples(DataPointCollection Data, int SampleCount, double Amplitude) { for (int i = 0; i < MaxSamples; i++) { Signal[i].Re = Math.Sin(i * 2 * 3.14 / MaxSamples); } for (int Sample = 0; Sample < SampleCount; Sample++) { DataPoint.Add(new DataPoint(Signal[Sample].Re, Sample)); } } void GenerateCosineSamples(DataPointCollection Data, int SampleCount, double Amplitude) { for (int i = 0; i < MaxSamples; i++) { Signal[i].Re = Math.Sin(i * 2 * 3.14 / MaxSamples + 1.57); } for (int Sample = 0; Sample < SampleCount; Sample++) { DataPoint.Add(new DataPoint(Signal[Sample].Re, Sample)); } } } }
Allerdings bekomme ich nun das hier raus:
Wo steckt da der Fehler? Was habe ich falsch gemacht?
Danke für die Hilfe!
Antworten
-
Ok habe es hinbekommen....da war wohl doch einiges verknotet :D
Habe den Code etwas umgeschrieben und das Ergebnis sieht nun so aus:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Microsoft.Research.DynamicDataDisplay.DataSources; using Microsoft.Research.DynamicDataDisplay; using AForge.Math; namespace Graph { /// <summary> /// Interaktionslogik für MainWindow.xaml /// </summary> public partial class MainWindow : Window { public static int MaxSamples = 64; public static Complex[] Sinus = new Complex[MaxSamples]; public static Complex[] Cosinus = new Complex[MaxSamples]; public static Complex[] Spektrum = new Complex[MaxSamples]; public MainWindow() { InitializeComponent(); } private void DataWindow_Initialized(object sender, EventArgs e) { GenerateSineSamples(Sinus, MaxSamples, 1.0); PlotData(Sinus, MaxSamples, Colors.Green, "Signal"); //FourierTransform.FFT(Signal, FourierTransform.Direction.Forward); /*for (int Sample = 0; Sample < MaxSamples; Sample++) { DataPoint.Add(new DataPoint(Signal[Sample].Im, Sample)); }*/ GenerateCosineSamples(Cosinus, MaxSamples, 2.0); PlotData(Cosinus, MaxSamples, Colors.Red, "Spektrum"); } private void PlotData(Complex[] Data, int Samples, Color Farbe, string Name) { DataPointCollection Real = new DataPointCollection(); DataPointCollection Imaginaer = new DataPointCollection(); for (int Sample = 0; Sample < Samples; Sample++) { Real.Add(new DataPoint(Data[Sample].Re, Sample)); Imaginaer.Add(new DataPoint(Data[Sample].Im, Sample)); } AddPlot(Real, Farbe, Name + " - Re"); AddPlot(Imaginaer, Farbe, Name + " - Im"); } private void AddPlot(DataPointCollection DataPoint, Color Farbe, string Name) { var DataList = new EnumerableDataSource<DataPoint>(DataPoint); DataList.SetXMapping(x => x.X); DataList.SetYMapping(y => y.Y); plotter.AddLineGraph(DataList, Farbe, 2, Name); } void GenerateSineSamples(Complex[] Data, int SampleCount, double Amplitude) { for (int i = 0; i < MaxSamples; i++) { Data[i].Re = Amplitude * Math.Sin(i * 2 * 3.14 / MaxSamples); } } void GenerateCosineSamples(Complex[] Data, int SampleCount, double Amplitude) { for (int i = 0; i < MaxSamples; i++) { Data[i].Re = Amplitude * Math.Cos(i * 2 * 3.14 / MaxSamples); } } } }
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 6. August 2015 06:47
- Als Antwort markiert Aleksander Chalabashiev Montag, 17. August 2015 12:02