//filtering void filtering() { int anglesarraysize = anglesMid.Count; double[] preProcessedData = new double[anglesarraysize]; for (int i = 0; i < anglesMid.Count; i++) { preProcessedData[i] = anglesMid[i]; } MathNet.Filtering.OnlineFilter lowPass = MathNet.Filtering.OnlineFilter.CreateLowpass(MathNet.Filtering.ImpulseResponse.Infinite, 400, 10000, 3); preProcessedData = lowPass.ProcessSamples(preProcessedData); anglesMid.Clear(); for (int i = 0; i < preProcessedData.Length; i++) { anglesMid.Add((float)preProcessedData[i]); } }
//filtering void filtering() { MathNet.Filtering.OnlineFilter lowPass = MathNet.Filtering.OnlineFilter.CreateLowpass(MathNet.Filtering.ImpulseResponse.Finite, 200000, 5000, 10); double[] flexAnglesMidArray = new double[flexAnglesMid.Count]; for (int i = 0; i < flexAnglesMid.Count; ++i) { flexAnglesMidArray[i] = flexAnglesMid[i]; } flexAnglesMidArray = lowPass.ProcessSamples(flexAnglesMidArray); for (int i = 0; i < flexAnglesMidArray.Length; i++) { flexAnglesMidCorrected.Add(flexAnglesMidArray[i]); } flexAnglesMid.Clear(); copyListByValue(flexAnglesMidCorrected, flexAnglesMid); //Kinect double[] KinectAnglesArray = new double[kinectFeedback.flexAngles.Count]; MathNet.Filtering.OnlineFilter lowPassKin = MathNet.Filtering.OnlineFilter.CreateLowpass(MathNet.Filtering.ImpulseResponse.Finite, 200000, 15000, 10); for (int i = 0; i < kinectFeedback.flexAngles.Count; ++i) { KinectAnglesArray[i] = kinectFeedback.flexAngles[i]; } KinectAnglesArray = lowPassKin.ProcessSamples(KinectAnglesArray); for (int i = 0; i < KinectAnglesArray.Length; i++) { kinectFlexAnglesCorrected.Add(KinectAnglesArray[i]); } kinectFeedback.flexAngles.Clear(); copyListByValue(kinectFlexAnglesCorrected, kinectFeedback.flexAngles); }