public static void ZapiszDoPliku(Funkcja fun, string path) { using (StreamWriter writer = new StreamWriter(path)) { foreach (var item in fun.Punkty) { writer.WriteLine(item.X + " " + item.Y); } } }
public static void ZapiszDoPlikuWlasciwosci(Funkcja fun, string path, double t1, double f, bool rz) { using (StreamWriter writer = new StreamWriter(path)) { writer.WriteLine(fun.CzasPoczatkowy); writer.WriteLine(fun.CzestotliwoscProbkowania); writer.WriteLine(fun.Rzeczywiste); foreach (var item in fun.Punkty) { writer.WriteLine(item.X + " " + item.Y); } } }
public static Funkcja Pomnoz(Funkcja f1, Funkcja f2) { int ile; List <Punkt> lista = new List <Punkt>(); if (f1.Punkty.Count > f2.Punkty.Count) { ile = f2.Punkty.Count; } else { ile = f1.Punkty.Count; } for (int i = 0; i < ile; i++) { lista.Add(new Punkt(f1.Punkty.ElementAt(i).X, f1.Punkty.ElementAt(i).Y *f2.Punkty.ElementAt(i).Y)); } return(new Funkcja(lista)); }
//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"); }
public static Funkcja KwantyzacjaRownomiernaZZaokragleniem(Funkcja funkcja) { Funkcja temp = funkcja; double ktoryProgKwantyzacji = 0; double polowaProgu = 0; double nizszyPrzedzial = 0; double wyzszyPrzedzial = 0; foreach (var item in temp.Punkty) { if (item.Y < -1.5) { var s = 3; } ktoryProgKwantyzacji = item.Y / CoIlePrzedzial; nizszyPrzedzial = Math.Floor(ktoryProgKwantyzacji) * CoIlePrzedzial; wyzszyPrzedzial = nizszyPrzedzial + CoIlePrzedzial; polowaProgu = wyzszyPrzedzial - (CoIlePrzedzial / 2); if (item.Y < polowaProgu) { item.Y = nizszyPrzedzial; } else { // if (item.Y == listaY.Last()) // { // item.Y = (int)ktoryProgKwantyzacji; // } else item.Y = wyzszyPrzedzial; } // polowaProgu *= -1; } return(temp); }
public static void WezFunkcje(Funkcja org, Funkcja kop) { oryginal = org; podrobka = kop; }