private void DFT()

{

    try

    {

        int WYMIAR = Convert.ToInt32(textBox1.Text);

        Complex[] dane = new Complex[WYMIAR];

 

        for (int k = 0; k < dane.Count(); k++) // próbkowanie

            dane[k] = new Complex(f(2.0 * Math.PI * (double)k / (double)dane.Count()), 0);

 

        MathNet.Numerics.IntegralTransforms.Algorithms.DiscreteFourierTransform DFT = new MathNet.Numerics.IntegralTransforms.Algorithms.DiscreteFourierTransform();

        var wynik = DFT.NaiveForward(dane, MathNet.Numerics.IntegralTransforms.FourierOptions.Matlab);

 

        for (int i = 0; i < 2; i++)

        {

            chart1.Series[i].Points.Clear();

            chart1.ChartAreas[i].AxisX.Minimum = 0;

            chart1.ChartAreas[i].AxisX.Maximum = wynik.Count();

        }

 

        double[] amplitudy = new double[dane.Count()];

        for (int k = 0; k < wynik.Count(); k++)

        {

            amplitudy[k] = wynik[k].Magnitude;

            chart1.Series[0].Points.AddXY(k, wynik[k].Magnitude);

        }

 

        double MAX = amplitudy.Max() / 1e-14;

        for (int k = 0; k < wynik.Count(); k++)

            if (wynik[k].Magnitude > 1e-2)

                chart1.Series[1].Points.AddXY(k, wynik[k].Phase * 180.0 / Math.PI);

            else

                chart1.Series[1].Points.AddXY(k, 0.0);

        label2.Text = "OK";

    }

    catch (Exception ex)

    {

        label2.Text = ex.Message;

    }

}