Пример #1
0
    //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]);
        }
    }
Пример #2
0
    //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);
    }