Beispiel #1
0
        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();
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }