private void Simulation(object arg) { SentSignal.Clear(); ReceivedSignal.Clear(); var samplingPeriod = 1.0d / SentSignalData.SamplingFrequency.Value; for (var i = 0; i < SentSignalData.NumberOfSamples.Value; i++) { SentSignal.Add(new ObservableValue(Signal(i * samplingPeriod))); ReceivedSignal.Add(new ObservableValue(Signal(i * samplingPeriod))); } CorrelationData.AddRange(Correlation .Correlate(SentSignal.Select(p => new Point(0, p.Value)), ReceivedSignal.Select(p => new Point(0, p.Value))).Select(p => new ObservableValue(p.Y))); simulationThread = new Thread(RunSimulation); simulationThread.Start(); }