Пример #1
0
 public void FIRFilter_CreateNewObject()
 {
     FIRFilter Filter = new FIRFilter(new List <double>()
     {
         0.25, 0.25, 0.25, 0.25
     });
 }
Пример #2
0
        public void FIRFilter_FilterFewSamples()
        {
            FIRFilter Filter = new FIRFilter(new List <double>()
            {
                0.25, 0.25, 0.25, 0.25
            });

            Filter.AddSample(new Sample(0, 0));
            Filter.AddSample(new Sample(1, 1));
            Filter.AddSample(new Sample(2, 2));
            Filter.AddSample(new Sample(3, 4));
            Sample filteredSample = Filter.AddSample(new Sample(4, 8));

            Assert.AreEqual((1 * 0.25 + 2 * 0.25 + 4 * 0.25 + 8 * 0.25), filteredSample.Value);

            filteredSample = Filter.AddSample(new Sample(5, 2));

            Assert.AreEqual((2 * 0.25 + 4 * 0.25 + 8 * 0.25 + 2 * 0.25), filteredSample.Value);
        }
Пример #3
0
 public Demodulation()
 {
     CursorWindowFilterI = new FIRFilter(FIRCoefficients.FIRLowPass_4);
     CursorWindowFilterQ = new FIRFilter(FIRCoefficients.FIRLowPass_4);
 }
Пример #4
0
        private void GenerateChart()
        {
            if (csv == null)
            {
                return;
            }

            WaitingScreen.Visible = true;
            this.Refresh();

            list1.Clear();
            list2.Clear();

            IFilter Filter;

            string FilterType = FilterSelector.Text;

            switch (FilterType)
            {
            case "FIR Filter":
                Filter = new FIRFilter(new List <double>()
                {
                    0.25, 0.25, 0.25, 0.25
                });
                break;

            case "Alpha Beta Filter":
                Filter = new AlphaBetaFilter(0.2, 0.3);
                break;

            case "Smart Alpha Beta Filter":
                Filter = new SmartAlphaBetaFilter(0.003307643036326, 200);
                break;

            default:
                Filter = null;
                break;
            }

            int PreviousProgress = 0;
            int Progress         = 0;
            int i = 0;


            Integrator integrator = new Integrator();

            foreach (KeyValuePair <double, List <double> > entry in csv.Data)
            {
                InertialNavigationSystem.Sample sample = new InertialNavigationSystem.Sample(entry.Key, entry.Value[ColumnSelector.SelectedIndex]);

                if (Filter != null)
                {
                    sample = Filter.AddSample(sample);
                }

                list1.Add(sample.Time, sample.Value);

                integrator.AddSample(sample);
                if (DrawIntegral.Checked)
                {
                    list2.Add(sample.Time, integrator.Value);
                }

                i++;

                Progress = i * 100 / csv.Data.Count;

                if (PreviousProgress != Progress)
                {
                    ProgressIndicator.Value = Progress;
                    Application.DoEvents();
                }

                PreviousProgress = Progress;
            }

            Chart1.AxisChange();
            Chart1.Refresh();

            WaitingScreen.Visible = false;
        }