Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5. class FourierPanel extends JPanel implements ActionListener {
  6. /**
  7. *
  8. */
  9. private static final long serialVersionUID = 1L;
  10. private TraceV7 trace = new TraceV7(this);
  11. private JTextField tfAmp = new JTextField("1.0");
  12. private JTextField tfFreq = new JTextField("1.0");
  13. private JTextField tfHarm = new JTextField("10");
  14. private JComboBox<String> chForm = new JComboBox<String>();
  15. private JButton btBerechne = new JButton("Berechne");
  16. private PlotPanel plotPanel = new PlotPanel();
  17. private double[] signal = {};
  18.  
  19. private static final int TRAPEZ = 0, DREIECK = 1, SAWTOOTH = 2, RECHTECK = 3, PULSE = 4;
  20.  
  21. /**
  22. * <pre>
  23. * - Baut GUI
  24. * - Registriert Listener
  25. * </pre>
  26. */
  27. public FourierPanel() {
  28. trace.constructorCall();
  29. setLayout(null);
  30.  
  31. add(new Label("Amplitude:")).setBounds(20, 20, 60, 20);
  32. add(tfAmp).setBounds(100, 20, 100, 20);
  33. add(new Label("Frequenz:")).setBounds(500, 20, 60, 20);
  34. add(tfFreq).setBounds(560, 20, 100, 20);
  35. add(new Label("Form:")).setBounds(20, 50, 60, 20);
  36. add(chForm).setBounds(100, 50, 100, 20);
  37. add(new Label("Harmonics:")).setBounds(490, 50, 70, 20);
  38. add(tfHarm).setBounds(560, 50, 100, 20);
  39.  
  40. add(btBerechne).setBounds(10, 650, 680, 20);
  41. btBerechne.addActionListener(this);
  42.  
  43. chForm.addItem("Trapez");
  44. chForm.addItem("Dreieck");
  45. chForm.addItem("Sawtooth");
  46. chForm.addItem("Rechteck");
  47. chForm.addItem("Pulse");
  48. }
  49.  
  50. /**
  51. * <pre>
  52. * - Liest Information aus GUI aus und legt sie in entsprechenden lokalen Var. ab.
  53. * - Verzweigung chForm.getSelectedIndex():
  54. * - Fall 0:
  55. * - signal gleich berechneRechteck() mit entsprechenden Parametern berechnen.
  56. * - Fall 1:
  57. * - signal gleich berechneDreieck() mit entsprechenden Parametern berechnen.
  58. * - Fall 2:
  59. * - signal gleich berechneSaegezahn() mit entsprechenden Parametern berechnen.
  60. * - Fall 3:
  61. * - signal gleich berechneTrapez() mit entsprechenden Parametern berechnen.
  62. * - Fall 4:
  63. * - signal gleich berechnePulse() mit entsprechenden Parametern berechnen.
  64. * - Setzt Signal des PlotPanels mittels setSignal().
  65. * - Löst Neuzeichnen aus.
  66. * </pre>
  67. */
  68. @Override
  69. public void actionPerformed(ActionEvent e) {
  70. trace.eventCall();
  71. int N = 620; // Anzahl Punkte auf der x Achse
  72.  
  73. if(e.getSource()==btBerechne) {
  74.  
  75. double ampli = Double.parseDouble(tfAmp.getText());
  76. double frequi = Double.parseDouble(tfFreq.getText());
  77. int harmoni = (int) Double.parseDouble(tfHarm.getText());
  78.  
  79. switch (chForm.getSelectedIndex()) {
  80. case RECHTECK:
  81. signal = berechneRechteck(ampli, frequi, harmoni, N);
  82. break;
  83.  
  84. case DREIECK:
  85. signal = berechneDreieck(ampli, frequi, harmoni, N);
  86. break;
  87.  
  88. case SAWTOOTH:
  89. signal = berechneSaegezahn(ampli, frequi, harmoni, N);
  90. break;
  91.  
  92. case TRAPEZ:
  93. signal = berechneTrapez(ampli, frequi, harmoni, N);
  94. break;
  95.  
  96. case PULSE:
  97. signal = berechnePulse(ampli, frequi, harmoni, N);
  98. break;
  99. }
  100. plotPanel.setSignal(signal);
  101. plotPanel.repaint();
  102. }
  103. }
  104.  
  105. private double[] berechnePulse(double amp, double freq, int nHarm, int N) {
  106. trace.methodeCall();
  107. double[] x = new double[N];
  108.  
  109.  
  110.  
  111. return x;
  112. }
  113.  
  114. private double[] berechneTrapez(double amp, double freq, int nHarm, int N) {
  115. trace.methodeCall();
  116. double[] x = new double[N];
  117.  
  118. double beta = Math.PI / 3.0;
  119.  
  120. for (int n = 0; n < N; n++) {
  121. for ( int k = 1; k <= nHarm+1; k++) {
  122. x[n] += (4*amp/(Math.PI*beta))
  123. * Math.sin(beta*(2*k-1))
  124. * Math.sin(2.0*Math.PI*(2*k-1)*freq*n/N)
  125. / Math.pow(2*k-1,2.0);
  126. }
  127. }
  128. return x;
  129. }
  130.  
  131. /**
  132. * <pre>
  133. * -Berechnet aufgrund der Parameter Rechtecksignal
  134. * </pre>
  135. *
  136. * @param amp
  137. * @param freq
  138. * @param nHarm
  139. * @return
  140. */
  141. private double[] berechneRechteck(double amp, double freq, int nHarm, int N) {
  142. trace.methodeCall();
  143. double[] x = new double[N];
  144.  
  145. return x;
  146. }
  147.  
  148. /**
  149. * <pre>
  150. * -Berechnet aufgrund der Parameter Dreiecksignal
  151. * </pre>
  152. *
  153. * @param amp
  154. * @param freq
  155. * @param nHarm
  156. * @return
  157. */
  158. private double[] berechneDreieck(double amp, double freq, int nHarm, int N) {
  159. trace.methodeCall();
  160. double[] x = new double[N];
  161.  
  162. return x;
  163. }
  164.  
  165. /**
  166. * <pre>
  167. * -Berechnet aufgrund der Parameter Sägezahnsignal
  168. * </pre>
  169. *
  170. * @param amp
  171. * @param freq
  172. * @param nHarm
  173. * @return
  174. */
  175. private double[] berechneSaegezahn(double amp, double freq, int nHarm, int N) {
  176. trace.methodeCall();
  177. double[] x = new double[N];
  178.  
  179. return x;
  180. }
  181.  
  182. }
  183.  
  184. public class FourierPanelFrame extends JFrame {
  185.  
  186.  
  187. public static void main(String args[]) {
  188. TraceV7.mainCall();
  189. FourierPanelFrame frame = new FourierPanelFrame();
  190. frame.addWindowListener(new WindowAdapter() {
  191. public void windowClosing(WindowEvent e) {
  192. System.exit(1);
  193. }
  194. });
  195. FourierPanel view = new FourierPanel();
  196. frame.add(view);
  197. frame.setSize(720, 720);
  198. //frame.setIconImage(icon);
  199. frame.setTitle("|FHNW|EIT|OOP|Fourier-Panel|");
  200. frame.setResizable(true);
  201. frame.setVisible(true);
  202.  
  203. }
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement