Wie kann man in RX eine einfache, stateful Transformation einer Sequenz machen?RX: Stateful Transformation der Sequenz, z.B. exponentieller gleitender Durchschnitt
Angenommen, wir wollen eine exponentielle gleitende Durchschnittsumwandlung einer IObservable-NoiseSequence machen.
Wenn noisySequence Zecken, emaSequence sollte den Wert (previousEmaSequenceValue * (1-Lambda) + latestNoisySequenceValue * lambda) kreuzen und das Rück
Ich denke, wir Themen verwenden, aber wie genau?
public static void Main()
{
var rand = new Random();
IObservable<double> sequence = Observable
.Interval(TimeSpan.FromMilliseconds(1000))
.Select(value => value + rand.NextDouble());
Func<double, double> addNoise = x => x + 10*(rand.NextDouble() - 0.5);
IObservable<double> noisySequence = sequence.Select(addNoise);
Subject<double> exponentialMovingAverage = new Subject<double>(); // ???
sequence.Subscribe(value => Console.WriteLine("original sequence "+value));
noisySequence.Subscribe(value => Console.WriteLine("noisy sequence " + value));
exponentialMovingAverage.Subscribe(value => Console.WriteLine("ema sequence " + value));
Console.ReadLine();
}
Um zu verdeutlichen, ich bin weniger interessiert an einer bestimmten Methode, um eine durchschnittliche, aber eher generische Möglichkeiten, um Stateful Transformationen zu machen. – Sputnik2513