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;
}
}