void Start() { floorF = Smoothing.Random(); roofF = Smoothing.Random(); }
public double[][] Generate(Dictionary <int, ISingleFrameExtendedResults> results, double frameRate, bool onlyForInteracting = false) { //Get signal IWhiskerAverageAngles angles = new WhiskerAverageAngles(); angles.StartFrame = StartFrame; angles.EndFrame = EndFrame; var allAngles = angles.GetWhiskerAngles(results, onlyForInteracting); if (allAngles == null || !allAngles.Any() || (allAngles[0].Count == 0 && allAngles[1].Count == 0)) { return(null); } LeftSignal = allAngles[0].Select(x => x.Value).ToArray(); RightSignal = allAngles[1].Select(x => x.Value).ToArray(); double[] leftSignal = LeftSignal; double[] rightSignal = RightSignal; if (SmoothingFunction != null) { for (int i = 0; i < SmoothRepeats; i++) { leftSignal = SmoothingFunction.Smooth(leftSignal); rightSignal = SmoothingFunction.Smooth(rightSignal); } } LeftSignal = leftSignal; RightSignal = rightSignal; IFrequency frequency = new Frequency(); frequency.UseDft = false; frequency.Signal = LeftSignal; frequency.FrameRate = frameRate; frequency.UseDft = UseDft; double[] leftZeroed, rightZeroed; double lefFequency = frequency.GetFrequency(out leftZeroed); frequency.Signal = RightSignal; double rightFrequency = frequency.GetFrequency(out rightZeroed); Console.WriteLine($"Left Freq: {lefFequency}, Right freq: {rightFrequency}"); LeftWhiskerFrequency = lefFequency; RightWhiskerFrequnecy = rightFrequency; //Get amplitude Amplitude amp = new Amplitude(); LeftWhiskerAmplitude = amp.GetMaxAmpitude(LeftSignal); RightWhiskerAmplitude = amp.GetMaxAmpitude(RightSignal); //Get mean offset MeanOffset offSet = new MeanOffset(); LeftMeanOffset = offSet.GetMeanOffset(LeftSignal); RightMeanOffset = offSet.GetMeanOffset(RightSignal); SingleWhiskerProtractionRetraction proRetLeft = new SingleWhiskerProtractionRetraction(); SingleWhiskerProtractionRetraction proRetRight = new SingleWhiskerProtractionRetraction(); proRetLeft.FrameRate = 500; proRetRight.FrameRate = 500; proRetLeft.AngleSignal = LeftSignal; proRetRight.AngleSignal = RightSignal; LeftAverageAngularVelocity = proRetLeft.MeanAngularVelocity; LeftAverageProtractionVelocity = proRetLeft.MeanProtractionVelocity; LeftAverageRetractionVelocity = proRetLeft.MeanRetractionVelocity; RightAverageAngularVelocity = proRetRight.MeanAngularVelocity; RightAverageProtractionVelocity = proRetRight.MeanProtractionVelocity; RightAverageRetractionVelocity = proRetRight.MeanRetractionVelocity; return(new double[][] { leftZeroed, rightZeroed }); }