private void Form2_Shown(object sender, EventArgs e) { ChartCoordinates newCC;; for (int i = 0; i < sendForm.vFuncs.Count; i++) { if (sendForm.vFuncs[i] != "") { getChartCoordinates(sendForm.vFuncs[i]); } else { newCC = new ChartCoordinates(PointCount); listChartCoordinates.Add(newCC); AddFourierInList(); AddInvFourierInList(); } } newCC = new ChartCoordinates(PointCount); newCC.SetX(listChartCoordinates[0].GetX()); newCC.SetY(Add2Func(0, 1)); listChartCoordinates.Add(newCC); AddFourierInList(); AddInvFourierInList(); newCC = new ChartCoordinates(PointCount); newCC.SetX(listChartCoordinates[0].GetX()); newCC.SetY(Add2Func(2, 3)); listChartCoordinates.Add(newCC); AddFourierInList(); AddInvFourierInList(); newCC = new ChartCoordinates(PointCount); newCC.SetX(listChartCoordinates[0].GetX()); if (sendForm.i != -1 || sendForm.j != -1) { newCC.SetY(GDI(sendForm.i, sendForm.j, sendForm.k)); } else if (sendForm.k != -1) { newCC.SetY(setOne()); } listChartCoordinates.Add(newCC); AddFourierInList(); AddInvFourierInList(); newCC = new ChartCoordinates(PointCount); newCC.SetX(listChartCoordinates[0].GetX()); double[] y1 = listChartCoordinates[4].GetY(); double[] y2 = listChartCoordinates[5].GetY(); newCC.SetY(Mull2Func(y1, y2)); listChartCoordinates.Add(newCC); AddFourierInList(); AddInvFourierInList(); Filter(); }
private ChartCoordinates getFourierFunction(double[] y) { ChartCoordinates result = new ChartCoordinates(PointCount); alglib.complex[] yr = GetFourier1(y); //Complex[] yr = GetFourier(y); double[] yrr = new double[PointCount]; double[] xrr = new double[PointCount]; for (int i = 0; i < PointCount; i++) { yrr[i] = Math.Sqrt(Math.Pow(yr[i].x, 2) + Math.Pow(yr[i].y, 2)) / PointCount; //yrr[i] = yr[i].Abs; xrr[i] = i / 0.1; } result.SetX(xrr); result.SetY(yrr); return(result); }
private ChartCoordinates getInvFourierFunction(double[] y) { double[] xrr = new double[PointCount]; double[] yrr = new double[PointCount]; double[] invY; ChartCoordinates result = new ChartCoordinates(PointCount); /*Complex[] yy = Fourier.FFT(y); * Complex[] yy1 = Fourier.IFFT(yy);*/ alglib.fftr1dinv(GetFourier1(y), out invY); for (int i = 0; i < PointCount; i++) { xrr[i] = 0.1 / PointCount * i; yrr[i] = invY[i]; } result.SetX(xrr); result.SetY(yrr); return(result); }
private ChartCoordinates getResultsFunction(string func) { string buffString = ""; ChartCoordinates result = new ChartCoordinates(PointCount); double[] x = new double[PointCount]; double[] y = new double[PointCount]; for (int i = 0; i < PointCount; i++) { x[i] = 0.1 / PointCount * i; buffString = func.Replace("x", x[i].ToString().Replace(',', '.')); y[i] = Microsoft.JScript.Convert.ToNumber(this.mathEvaluator.Evaluate(buffString)); /*x[(int)j] = i; * buffString = func.Replace("x", x[(int)j].ToString().Replace(',', '.')); * y[(int)j] = Microsoft.JScript.Convert.ToNumber(this.mathEvaluator.Evaluate(buffString));*/ } result.SetX(x); result.SetY(y); return(result); }
private void Filter() { ChartCoordinates spect8 = new ChartCoordinates(PointCount); ChartCoordinates signl8 = new ChartCoordinates(PointCount); double[] invY; double[] yy = new double[PointCount]; double[] y = listChartCoordinates[listChartCoordinates.Count - 1].GetY(); double[] x = listChartCoordinates[listChartCoordinates.Count - 1].GetX(); double[] xx = listSChartCoordinates[listSChartCoordinates.Count - 1].GetX(); alglib.complex[] compY = GetFourier1(y); double limF = 1 / (2 * Math.PI * sendForm.R * sendForm.C) * 1000000; for (int i = 0; i < PointCount; i++) { if (limF < xx[i]) { yy[i] = 0; compY[i] = 0; } else { yy[i] = Math.Sqrt(Math.Pow(compY[i].x, 2) + Math.Pow(compY[i].y, 2)) / PointCount; } } spect8.SetX(xx); spect8.SetY(yy); alglib.fftr1dinv(compY, out invY); signl8.SetX(x); signl8.SetY(invY); listChartCoordinates.Add(signl8); listSChartCoordinates.Add(spect8); listSTChartCoordinates.Add(signl8); }