Advertisement
Guest User

dftwar

a guest
Jan 18th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.42 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Numerics;
  11. using MathNet.Numerics.IntegralTransforms;
  12. using MathNet.Numerics.IntegralTransforms.Algorithms;
  13. using System.Windows.Forms.DataVisualization.Charting;
  14.  
  15. namespace DFT
  16. {
  17.     public partial class Form1 : Form
  18.     {
  19.         #region Zmienne
  20.         Complex[] Data;
  21.         double fs;
  22.         int ProbeNumbers = 100, fx;
  23.         double[] Time;
  24.         Series s1, s2;
  25.  
  26.         #endregion
  27.  
  28.         public double g(double t, int f)
  29.         {
  30.             return (3 * Math.Sin((2 * Math.PI * f * t)));
  31.         }
  32.         public double rad2deg(double x)
  33.         {
  34.             return x * 180 / (Math.PI);
  35.         }
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.         public void button1_Click(object sender, EventArgs e)
  43.         {
  44.             if (radioButton1.Checked)
  45.             {
  46.                 fx = 100;
  47.             }
  48.             else
  49.             {
  50.                 fx = 105;
  51.             }
  52.  
  53.             fs = 1000;
  54.  
  55.             Data = new Complex[ProbeNumbers];
  56.             Time = new Double[ProbeNumbers];
  57.  
  58.  
  59.  
  60.             for (int t = 0; t < Time.Length; t++)
  61.             {
  62.                 Time[t] = t * (1 / fs);
  63.             }
  64.  
  65.             for (int m = 0; m < Data.Count(); m++)
  66.             {
  67.                 Data[m] = new Complex(g(Time[m],fx), 0);
  68.             }
  69.  
  70.             DiscreteFourierTransform DFT = new DiscreteFourierTransform();
  71.             var DFTdata = DFT.NaiveForward(Data, FourierOptions.Matlab);
  72.  
  73.  
  74.             s1 = chart1.Series[0];
  75.             s2 = chart1.Series[1];
  76.             s1.Points.Clear();
  77.             s2.Points.Clear();
  78.  
  79.  
  80.             double[] amp = new double[DFTdata.Count()];
  81.  
  82.  
  83.  
  84.             for (int i = 0; i < DFTdata.Count(); i++)
  85.             {
  86.                 if (DFTdata[i].Magnitude < Math.Pow(10, -5))
  87.                 {
  88.                     s1.Points.AddXY(Time[i], 0);
  89.                     s2.Points.AddXY(Time[i], 0);
  90.                 }
  91.                 else
  92.                 {
  93.                     s1.Points.AddXY(i, DFTdata[i].Magnitude);
  94.                     s2.Points.AddXY(i, rad2deg(DFTdata[i].Phase));
  95.                 }
  96.             }
  97.         }
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.         public Form1()
  107.         {
  108.             InitializeComponent();
  109.         }
  110.  
  111.  
  112.  
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement