//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"); }
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"); }