예제 #1
0
        //public static void oblicz(Funkcja funkcjaPoProbkowaniu, double czas_poczatkowy)
        //{
        //    Funkcja Frekonstruowana = new Funkcja(new List<Punkt>());
        //    for (int i = 0; i < funkcjaPoProbkowaniu.Punkty.Count; ++i)
        //    {
        //        var liczbaSasiadow = funkcjaPoProbkowaniu.Punkty.Count;
        //        var czestotliwosc = czas_poczatkowy / funkcjaPoProbkowaniu.Punkty.Count;
        //        var suma = 0.0;
        //        for (int j = liczbaSasiadow-3; j < liczbaSasiadow+3; ++j)
        //        {
        //            if (j < 0 || j >= funkcjaPoProbkowaniu.Punkty.Count)
        //            {
        //                continue;
        //            }
        //            suma += funkcjaPoProbkowaniu.Punkty[j].Y * sinc(funkcjaPoProbkowaniu.Punkty[j].X / czestotliwosc - i);
        //        }
        //        Frekonstruowana.Punkty.Add(new Punkt(i, suma));
        //    }
        //    GeneratorSygnalow.ZapiszDoPlikuWlasciwosci(Frekonstruowana, "RekonstrukcjaSinc.txt");
        //}

        public static void oblicz(Funkcja funkcjaPoProbkowaniu, double czas_poczatkowy)
        {
            Funkcja Frekonstruowana = new Funkcja(new List <Punkt>());

            for (double t = 0; t < funkcjaPoProbkowaniu.Punkty.Last().X; t += 0.01)
            {
                var liczbaSasiadow = funkcjaPoProbkowaniu.Punkty.Count(p => p.X < t);
                var czestotliwosc  = czas_poczatkowy / funkcjaPoProbkowaniu.Punkty.Count;
                var suma           = 0.0;
                for (int j = liczbaSasiadow - 4; j < liczbaSasiadow + 3; ++j)
                {
                    if (j < 0 || j >= funkcjaPoProbkowaniu.Punkty.Count)
                    {
                        continue;
                    }
                    suma += funkcjaPoProbkowaniu.Punkty[j].Y * sinc((t - funkcjaPoProbkowaniu.Punkty[j].X) / czestotliwosc);
                }
                Frekonstruowana.Punkty.Add(new Punkt(t, suma / 2));
            }
            GeneratorSygnalow.ZapiszDoPlikuWlasciwosci(Frekonstruowana, "RekonstrukcjaSinc.txt");
        }
예제 #2
0
        public static void oblicz(Funkcja funkcjaPoProbkowaniu)
        {
            Funkcja Finterpolowana = new Funkcja(new List <Punkt>());

            for (int i = 0; i < funkcjaPoProbkowaniu.Punkty.Count; ++i)
            {
                for (int j = 0; j < 10; ++j)
                {
                    if (j == 0)
                    {
                        Finterpolowana.Punkty.Add(new Punkt(funkcjaPoProbkowaniu.Punkty[i].X, funkcjaPoProbkowaniu.Punkty[i].Y));
                    }
                    //else if( j == 9)
                    //{
                    //    if (i == funkcjaPoProbkowaniu.Punkty.Count - 1)
                    //    {
                    //        continue;
                    //    } else
                    //    {
                    //        Finterpolowana.Punkty.Add(new Punkt(funkcjaPoProbkowaniu.Punkty[i + 1].X, funkcjaPoProbkowaniu.Punkty[i + 1].Y));
                    //    }
                    //}
                    else
                    {
                        if (i == funkcjaPoProbkowaniu.Punkty.Count - 1)
                        {
                            continue;
                        }
                        else
                        {
                            double wartoscX = Math.Abs(((funkcjaPoProbkowaniu.Punkty[i].X - funkcjaPoProbkowaniu.Punkty[i + 1].X)) * j / 10) + funkcjaPoProbkowaniu.Punkty[i].X;
                            Finterpolowana.Punkty.Add(new Punkt(wartoscX, ObliczY(funkcjaPoProbkowaniu.Punkty[i], funkcjaPoProbkowaniu.Punkty[i + 1], wartoscX)));
                        }
                    }
                }
            }
            GeneratorSygnalow.ZapiszDoPlikuWlasciwosci(Finterpolowana, "interpolacja.txt");
        }