martaczaska

Licz_25_11

Nov 25th, 2020
671
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package eti.radio.pr_inz;
  2.  
  3. import javax.imageio.ImageIO;
  4. import javax.swing.*;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.MouseListener;
  7. import java.awt.geom.*;
  8. import java.lang.Math;
  9. import java.awt.*;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.image.BufferedImage;
  13. import java.io.File;
  14. import java.io.IOException;
  15.  
  16. public class Licz extends JPanel implements ActionListener, MouseListener {
  17.  
  18.     private JButton wykresy;
  19.     private JButton wyjscie;
  20.     private JLabel tytul6, l_BS0, l_BS1, l_BS2, l_BS3, l_BS4, l_BS5, l_BS6, l_UT;
  21.     //public double xp = 470, yp = 400; //xp = 470, yp = 315;
  22.     public Double[] xp = new Double[850];
  23.     public Double[] yp = new Double[850];
  24.     //public double xp = 0, yp = 0; //xp = 470, yp = 315;
  25.     /*public Integer[] x = {0, -170, -170, 0, 170, 170, 0};
  26.     public Integer[] y = {0, -80, 77, 170, 77, -80, -170};*/
  27.     public Integer[] x = {470, 300, 300, 470, 640, 640, 470};
  28.     public Integer[] y = {400, 480, 313, 230, 313, 480, 570};
  29.     public BufferedImage tlo_dane;
  30.     public double UT_x, UT_y;
  31.     public double BS0_x = x[0], BS0_y = y[0];
  32.  
  33.     String str_UT = "";
  34.  
  35.     int nw = 0, s = 1;
  36.     double f_c = 2.6; // [GHz] *Math.pow(10, 9);
  37.     //double f_c = 10;
  38.     double d_2D; //m
  39.     double c = 3*Math.pow(10, 8);
  40.  
  41.     int d_2D_IN = 1;
  42.     int h_BS = 25, h_UT = 1;  ///zrobić jako Slidery
  43.     int h_E = 1; // 1m
  44.     int h = 5; //w metrach, do RMa
  45.     int W = 20; //w metrach, do RMa
  46.  
  47.     double sigma_LOS, sigma_NLOS;
  48.     public Double[][] PL_LOS= new Double[7][850];
  49.     public Double[][] PL_NLOS= new Double[7][850];
  50.     public Double[][] PL_NLOS2= new Double[7][850];
  51.     double d_BP, d2_BP;
  52.     public Double[] p = {10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0};
  53.     public Double[] d2D = {10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0};
  54.     public Double[][] d_3D = new Double[7][850];
  55.     public Double[] radius = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
  56.     public Double[] SNR = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
  57.     public Double[] SNR_WAT = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
  58.     public double I_suma_NLOS = 0, I_suma_LOS = 0;
  59.     double N = -174;
  60.     double N_W = Math.pow(10, (N/10 - 3));
  61.  
  62.     Wykresy rysuj_wykresy;
  63.  
  64.     public Licz(Wykresy rysuj_wykresy){
  65.         setLayout(null);
  66.         this.rysuj_wykresy = rysuj_wykresy;
  67.  
  68.         File zdj_menu = new File("zdjecia/strona_logo.png");
  69.         try{ tlo_dane = ImageIO.read(zdj_menu); }
  70.         catch(IOException e){ System.err.println("Blad odczytu obrazków"); }
  71.  
  72.         wyjscie = new JButton("Wyjście");
  73.         wyjscie.addActionListener(this);
  74.         wyjscie.setBounds(100, 620, 200, 60);
  75.         wyjscie.setFont(new Font("Sitka Text", Font.BOLD, 25));
  76.         wyjscie.setBackground(Color.white);
  77.  
  78.         wykresy = new JButton("Wykresy");
  79.         wykresy.addActionListener(this);
  80.         wykresy.setBounds(724, 620, 200, 60);
  81.         wykresy.setFont(new Font("Sitka Text", Font.BOLD, 25));
  82.         wykresy.setBackground(Color.white);
  83.  
  84.         System.out.println("Wybrany model: " + s);
  85.         System.out.println("Wybrany scenariusz O2I: " + nw);
  86.  
  87.         tytul6 = new JLabel( "Wskaż położenie terminala użytkownika w komórce zerowej", JLabel.CENTER);
  88.         tytul6.setSize(1000, 100);
  89.         tytul6.setLocation(5, 50);
  90.         tytul6.setFont(new Font("Sitka Text", Font.BOLD, 23));
  91.  
  92.         l_BS0 = new JLabel( "BS0", JLabel.CENTER);
  93.         l_BS0.setFont(new Font("Sitka Text", Font.BOLD, 23));
  94.         l_BS1 = new JLabel( "BS1", JLabel.CENTER);
  95.         l_BS1.setFont(new Font("Sitka Text", Font.BOLD, 23));
  96.         l_BS2 = new JLabel( "BS2", JLabel.CENTER);
  97.         l_BS2.setFont(new Font("Sitka Text", Font.BOLD, 23));
  98.         l_BS3 = new JLabel( "BS3", JLabel.CENTER);
  99.         l_BS3.setFont(new Font("Sitka Text", Font.BOLD, 23));
  100.         l_BS4 = new JLabel( "BS4", JLabel.CENTER);
  101.         l_BS4.setFont(new Font("Sitka Text", Font.BOLD, 23));
  102.         l_BS5 = new JLabel( "BS5", JLabel.CENTER);
  103.         l_BS5.setFont(new Font("Sitka Text", Font.BOLD, 23));
  104.         l_BS6 = new JLabel( "BS6", JLabel.CENTER);
  105.         l_BS6.setFont(new Font("Sitka Text", Font.BOLD, 23));
  106.         l_UT = new JLabel( "UT", JLabel.CENTER);
  107.         l_UT.setFont(new Font("Sitka Text", Font.BOLD,23));
  108.         l_UT.setForeground(Color.RED);
  109.  
  110.         add(tytul6); add(l_BS0); add(l_BS1); add(l_BS2); add(l_BS3); add(l_BS4); add(l_BS5); add(l_BS6); add(l_UT); add(wyjscie); add(wykresy);
  111.         addMouseListener(this);
  112.     }
  113.  
  114.     public double PL_O2I(int n, double pl){
  115.         double L_szklo = 2 + 0.2*f_c; //dB
  116.         double L_beton = 5 + 4*f_c; //dB
  117.         double PL_przeniki = 0;
  118.         double PL_tw, PL_in, sigma_P;
  119.         double N = 5;  // !!!!!!!!!!!!!!!!!!! ZMIENIĆ
  120.         PL_in = 0.5*d_2D_IN;
  121.  
  122.         if(n == 0){ //nisko stratny model
  123.             PL_tw = 5 - Math.log10(0.3*Math.pow(10, (-L_szklo/10)) + 0.7*Math.pow(10, (-L_beton/10)));
  124.             sigma_P = 4.4; //dB
  125.             PL_przeniki = pl + PL_tw + PL_in; // + N;
  126.         }
  127.         else if(n == 1){ ////wysoko stratny model
  128.             PL_tw = 5 - Math.log10(0.7*Math.pow(10, (-L_szklo/10)) + 0.3*Math.pow(10, (-L_beton/10)));
  129.             sigma_P = 4.4; //dB
  130.             PL_przeniki = pl + PL_tw + PL_in; // + N;
  131.         }
  132.         return PL_przeniki;
  133.     }
  134.  
  135.  
  136.     public void actionPerformed(ActionEvent e){
  137.         Object source = e.getSource();
  138.         if(source == wykresy){
  139.             CardLayout CL =(CardLayout)(Main.noweOkno.karty.getLayout());
  140.             CL.show(Main.noweOkno.karty, "rysuj_wykresy");
  141.  
  142.             pathLossDlaModelu(UT_x, UT_y);
  143.             licz_SINR();
  144.             System.out.println("SINR dla NLOS : " + rysuj_wykresy.SINR_dB_NLOS[0]);
  145.             System.out.println("SINR dla LOS : " + rysuj_wykresy.SINR_dB_LOS[0]);
  146.  
  147.         }
  148.         else if(source == wyjscie){
  149.             System.exit(0);
  150.         }
  151.     }
  152.  
  153.     public void mouseClicked(MouseEvent e) {}
  154.  
  155.     public void mousePressed(MouseEvent e) {
  156.         UT_x = e.getX();
  157.         UT_y = e.getY();
  158.         str_UT = "UT";
  159.         System.out.println("Nacisnięty punkt: x = " + UT_x + " y = " + UT_y);
  160.         repaint();
  161.     }
  162.  
  163.     public void mouseReleased(MouseEvent e) {}
  164.     public void mouseEntered(MouseEvent e) {}
  165.     public void mouseExited(MouseEvent e) {}
  166.  
  167.     public void paintComponent(Graphics graphic) {
  168.         //int R = Math.round(Math.sqrt(3)*125);
  169.         Graphics2D g2d = (Graphics2D) graphic;
  170.         g2d.drawImage(tlo_dane, 0, 0, this);
  171.  
  172.         Ellipse2D circle0 = new Ellipse2D.Double(370, 300, 200, 200);
  173.         Rectangle2D BS0 = new Rectangle2D.Double((int)circle0.getCenterX(), (int)circle0.getCenterY(), 5, 5);
  174.         l_BS0.setBounds((int)BS0.getX()-15, (int)BS0.getY()-15, 100, 50);
  175.  
  176.  
  177.         Ellipse2D circle1 = new Ellipse2D.Double(200, 380, 200, 200);
  178.         Rectangle2D BS1 = new Rectangle2D.Double((int)circle1.getCenterX(), (int)circle1.getCenterY(), 5, 5);
  179.         l_BS1.setBounds((int)BS1.getX()-15, (int)BS1.getY()-15, 100, 50);
  180.  
  181.         Ellipse2D circle2 = new Ellipse2D.Double(200, 213, 200, 200);
  182.         Rectangle2D BS2 = new Rectangle2D.Double((int)circle2.getCenterX(), (int)circle2.getCenterY(), 5, 5);
  183.         l_BS2.setBounds((int)BS2.getX()-15, (int)BS2.getY()-15, 100, 50);
  184.  
  185.         Ellipse2D circle3 = new Ellipse2D.Double(370, 130, 200, 200);
  186.         Rectangle2D BS3 = new Rectangle2D.Double((int)circle3.getCenterX(), (int)circle3.getCenterY(), 5, 5);
  187.         l_BS3.setBounds((int)BS3.getX()-15, (int)BS3.getY()-15, 100, 50);
  188.  
  189.         Ellipse2D circle4 = new Ellipse2D.Double(540, 213, 200, 200);
  190.         Rectangle2D BS4 = new Rectangle2D.Double((int)circle4.getCenterX(), (int)circle4.getCenterY(), 5, 5);
  191.         l_BS4.setBounds((int)BS4.getX()-15, (int)BS4.getY()-15, 100, 50);
  192.  
  193.         Ellipse2D circle5 = new Ellipse2D.Double(540, 380, 200, 200);
  194.         Rectangle2D BS5 = new Rectangle2D.Double((int)circle5.getCenterX(), (int)circle5.getCenterY(), 5, 5);
  195.         l_BS5.setBounds((int)BS5.getX()-15, (int)BS5.getY()-15, 100, 50);
  196.  
  197.         Ellipse2D circle6 = new Ellipse2D.Double(370, 470,200, 200);
  198.         Rectangle2D BS6 = new Rectangle2D.Double((int)circle6.getCenterX(), (int)circle6.getCenterY(), 5, 5);
  199.         l_BS6.setBounds((int)BS6.getX()-15, (int)BS6.getY()-15, 100, 50);
  200.  
  201.         Ellipse2D UT = new Ellipse2D.Double(UT_x, UT_y, 5, 5);
  202.         l_UT.setBounds((int)UT.getX()-15, (int)UT.getY()-15, 80, 50);
  203.  
  204.         g2d.draw(UT); g2d.draw(BS0); g2d.draw(BS1); g2d.draw(BS2); g2d.draw(BS3); g2d.draw(BS4); g2d.draw(BS5); g2d.draw(BS6);
  205.         g2d.draw(circle0); g2d.draw(circle1); g2d.draw(circle2); g2d.draw(circle3); g2d.draw(circle4); g2d.draw(circle5); g2d.draw(circle6);
  206.     }
  207.  
  208.     public double licz_sygnal_odebrany(double P_T, double G_TX, double L_FTX, double G_RX, double L_FRX, double PathL){
  209.         //SINR = P_T + G_TX - L_FTX + (PL +I) + G_RX - L_FRX - N - F - IM
  210.         int IM = 2;
  211.         double S, t_e = 1, t_o = 290, N, F;
  212.         //double k = 1.38*Math.pow(10, (-38)); //N = 10*Math.log10(k * t_o * pasmo); //N = -174; // [dBm]
  213.         F = 6 ;
  214.         S = P_T + G_TX - L_FTX - PathL + G_RX - L_FRX - F - IM; // [dBm]
  215.  
  216.         return S;
  217.     }
  218.  
  219.     public void pathLossDlaModelu(double ut_x, double ut_y){
  220.         if(s == 1){d_2D = 140;}
  221.         else if(s == 2 || s == 3){d_2D = 1000;}
  222.         else if(s == 4 || s == 5){d_2D = 650;}
  223.         else if(s == 6 || s == 7){d_2D = 5000;}
  224.  
  225.         d_3D[0][0] = 0.0;
  226.  
  227.         for(int k = 1; k < 7; k++){
  228.             xp[0] = 470.0;
  229.             yp[0] = 400.0;
  230.             radius[k] = Math.sqrt( Math.pow((x[0] - xp[0]), 2) + Math.pow((y[0] - yp[0]), 2));
  231.             d2D[k] = (radius[k]*d_2D)/85;
  232.             d_3D[k][0] = Math.sqrt( Math.pow((h_BS-h_UT), 2) + Math.pow(d2D[k], 2) );
  233.         }
  234.  
  235.         for(int j=1; j < 850; j++){
  236.             if((ut_x > BS0_x) && (ut_y < BS0_y)){ // I ćwiartka
  237.                 xp[j] = xp[j-1] + 0.1;
  238.                 yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
  239.             }
  240.             else if((ut_x < BS0_x) && (ut_y < BS0_y)){ // II ćwiartka
  241.                 xp[j] = xp[j-1] - 0.1;
  242.                 yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
  243.             }
  244.             else if((ut_x < BS0_x) && (ut_y > BS0_y)){ // III ćwiartka
  245.                 xp[j] = xp[j-1] - 0.1;
  246.                 yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
  247.             }
  248.             else if((ut_x > BS0_x) && (ut_y > BS0_y)){ // IV ćwiartka
  249.                 xp[j] = xp[j-1] + 0.1;
  250.                 yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
  251.             }
  252.  
  253.             for(int i = 0; i < 7; i++){
  254.                 radius[i] = Math.sqrt( Math.pow((x[i] - xp[j]), 2) + Math.pow((y[i] - yp[j]), 2));
  255.                 d2D[i] = (radius[i] * d_2D)/85; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
  256.                 d_3D[i][j] = Math.sqrt( Math.pow((h_BS-h_UT), 2) + Math.pow(d2D[i], 2) );
  257.             }
  258.         }
  259.  
  260.         //MODELE W ZALEŻNOŚCI OD WYBORU UŻYTKOWNIKA PROGRAMU
  261.         //d_BP = 4*((h_BS - 1)*(h_UT - 1)*f_c*Math.pow(10, 9))/c;
  262.         //System.out.println("d_BP : " + d_BP);
  263.         //d2_BP = 2*(Math.PI*h_BS*h_UT*f_c*Math.pow(10, 9))/c;
  264.         //System.out.println("d2_BP : " + d2_BP);
  265.  
  266.         if(s == 1){ //model Indoor Hotspot - InH
  267.             for(int j = 0; j < 850; j++){
  268.                 for(int i=0; i < 7; i++){
  269.                     PL_LOS[i][j] = 32.4 + 17.3*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c + 0.1*i);     //- path loss for LOS
  270.                     PL_NLOS2[i][j] = 38.3*Math.log10(d_3D[i][j]) + 17.3 + 24.9*Math.log10(f_c+ 0.1*i);
  271.                     PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);                           //- path loss for NLOS
  272.                 }
  273.             }
  274.             sigma_LOS = 3; //dB
  275.             sigma_NLOS = 8.03; //dB
  276.         }
  277.  
  278.         else if(s == 2 || s == 3){ //model Urban Macro- UMa
  279.             for(int j = 0; j < 850; j++){
  280.                 for(int i=0; i < 7; i++){
  281.                     if( d_2D >= 10 && d_2D <= d_BP){
  282.                         PL_LOS[i][j] = 28 + 22*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c);
  283.                         PL_NLOS2[i][j] = 13.54 + 39.08*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c) -6*(h_UT-1.5);
  284.                         PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
  285.                     }
  286.                     else if(d_2D >= d_BP && d_2D <= 5000){
  287.                         PL_LOS[i][j] = 28 + 40*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c) -9*(Math.pow(d_BP,2) + Math.pow((h_BS + h_UT),2));
  288.                         PL_NLOS2[i][j] = 13.54 + 39.08*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c) -6*(h_UT-1.5);
  289.                         PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
  290.                     }
  291.                 }
  292.             }
  293.             sigma_LOS = 4; //dB
  294.             sigma_NLOS = 6; //dB
  295.  
  296.             if(s == 3) {
  297.                 for(int j = 0; j < 850; j++){
  298.                     for(int i=0; i < 7; i++){
  299.                         PL_LOS[i][j] = PL_O2I(nw, PL_LOS[i][j]);
  300.                         PL_NLOS[i][j] = PL_O2I(nw, PL_NLOS[i][j]);
  301.                     }
  302.                 }
  303.             }
  304.         }
  305.         else if(s == 4 || s == 5){ //model Urban Micro- UMi
  306.             for(int j = 0; j < 850; j++){
  307.                 for(int i=0; i < 7; i++){
  308.                     if( d_2D >= 10 && d_2D <= d_BP){
  309.                         PL_LOS[i][j] = 32.4 + 21*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c);
  310.                         PL_NLOS2[i][j] = 22.4 + 35.3*Math.log10(d_3D[i][j]) + 21.3*Math.log10(f_c) -0.3*(h_UT-1.5);
  311.                         PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
  312.                     }
  313.                     else if(d_2D >= d_BP && d_2D <= 5000){
  314.                         PL_LOS[i][j] = 32.4 + 40*Math.log10(d_3D[i][j]) + 20*Math.log10(f_c) -9.5*(Math.pow(d_BP,2) + Math.pow((h_BS + h_UT),2));
  315.                         PL_NLOS2[i][j] = 22.4 + 35.3*Math.log10(d_3D[i][j]) + 21.3*Math.log10(f_c) -0.3*(h_UT-1.5);
  316.                         PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
  317.                     }
  318.                 }
  319.             }
  320.             sigma_LOS = 4; //dB
  321.             sigma_NLOS = 7.82; //dB
  322.  
  323.             if(s == 5) {
  324.                 for(int j = 0; j < 850; j++){
  325.                     for(int i=0; i < 7; i++){
  326.                         PL_LOS[i][j] = PL_O2I(nw, PL_LOS[i][j]);
  327.                         PL_NLOS[i][j] = PL_O2I(nw, PL_NLOS[i][j]);
  328.                     }
  329.                 }
  330.             }
  331.         }
  332.  
  333.         else if(s == 6 || s == 7) { //model Rural Macro- RMa
  334.             for(int j = 0; j < 850; j++){
  335.                 for(int i=0; i < 7; i++){
  336.                     if (d_2D >= 10 && d_2D <= d2_BP) {
  337.                         PL_LOS[i][j] = 2 * Math.log10((40 * Math.PI * d_3D[i][j] * f_c) / 3) + Math.min(Math.pow(0.03 * h, 1.72), 10) * Math.log10(d_3D[i][j]) - Math.min(Math.pow(0.044 * h, 1.72), 14.77) + 0.002 * Math.log10(h) * d_3D[i][j];
  338.                         PL_NLOS2[i][j] = 161.04 - 7.1 * Math.log10(W) + 7.5 * Math.log10(h) - (24.37 - 3.7 * Math.pow((h / h_BS), 2) * Math.log10(h_BS) + (43.42 - 3.1 * Math.log10(h_BS)) * (Math.log10(d_3D[i][j]) - 3) + 20 * Math.log10(f_c) - (3.2 * (Math.log10(11.75 * h_UT) - 4.97)));
  339.                         PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
  340.                         sigma_LOS = 4; //dB
  341.                     } else if (d_2D >= d2_BP && d_2D <= 21000) {
  342.                         PL_LOS[i][j] = 2 * Math.log10((40 * Math.PI * d2_BP * f_c) / 3) + Math.min(Math.pow(0.03 * h, 1.72), 10) * Math.log10(d2_BP) - Math.min(Math.pow(0.044 * h, 1.72), 14.77) + 0.002 * Math.log10(h) * d2_BP + 40 * Math.log10(d_3D[i][j] / d2_BP);
  343.                         PL_NLOS2[i][j] = 161.04 - 7.1 * Math.log10(W) + 7.5 * Math.log10(h) - (24.37 - 3.7 * Math.pow((h / h_BS), 2) * Math.log10(h_BS) + (43.42 - 3.1 * Math.log10(h_BS)) * (Math.log10(d_3D[i][j]) - 3) + 20 * Math.log10(f_c) - (3.2 * (Math.log10(11.75 * h_UT) - 4.97)));
  344.                         PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
  345.                         sigma_LOS = 6; //dB
  346.                     }
  347.                 }
  348.             }
  349.             sigma_NLOS = 8; //dB
  350.  
  351.             if (s == 7) {
  352.                 for(int j = 0; j < 850; j++){
  353.                     for(int i=0; i < 7; i++){
  354.                         PL_LOS[i][j] = PL_O2I(nw, PL_LOS[i][j]);
  355.                         PL_NLOS[i][j] = PL_O2I(nw, PL_NLOS[i][j]);
  356.                         System.out.println("Udało się, yaaaaaaaaaaaaaaaaaaaaaaaaay!");
  357.                     }
  358.                 }
  359.             }
  360.         }
  361.  
  362.     }
  363.  
  364.     public void licz_SINR(){
  365.         Double[] S_NLOS = new Double[7];
  366.         Double[] S_LOS = new Double[7];
  367.         Double[] I_W_NLOS = new Double[7]; //inerferencje w watach
  368.         Double[] I_W_LOS = new Double[7]; //inerferencje w watach
  369.         Double[] S_0_NLOS = new Double[850];
  370.         Double[] S_0_LOS = new Double[850];
  371.  
  372.         for(int t=0; t < 850; t++){
  373.             if(t==0){
  374.                 for (int i = 0; i < 7; i++) {
  375.                     S_NLOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, 0);
  376.                     S_LOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, 0);
  377.                 }
  378.             }
  379.             else if(t > 0){
  380.                 for (int i = 0; i < 7; i++) {
  381.                     S_NLOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, PL_NLOS[i][t]);
  382.                     S_LOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, PL_LOS[i][t]);
  383.                 }
  384.             }
  385.  
  386.             S_0_NLOS[t] = Math.pow(10, (S_NLOS[0]/10 - 3)); // z dBm na waty
  387.             I_W_NLOS[0] = 0.0;
  388.             I_suma_NLOS = 0.0;
  389.  
  390.             S_0_LOS[t] = Math.pow(10, (S_LOS[0]/10 - 3)); // z dBm na waty
  391.             I_W_LOS[0] = 0.0;
  392.             I_suma_LOS = 0.0;
  393.  
  394.             for(int j=1; j < 7; j++){
  395.                 I_W_NLOS[j] = Math.pow(10, S_NLOS[j]/10 - 3); // z dBm na waty
  396.                 I_suma_NLOS = I_suma_NLOS + I_W_NLOS[j];
  397.  
  398.                 I_W_LOS[j] = Math.pow(10, (S_LOS[j]/10 - 3)); // z dBm na waty
  399.                 I_suma_LOS = I_suma_LOS + I_W_LOS[j];
  400.             }
  401.  
  402.             rysuj_wykresy.SINR_NLOS[t] = S_0_NLOS[t] / ( I_suma_NLOS + N_W);
  403.             rysuj_wykresy.SINR_dB_NLOS[t] = 10*Math.log10(rysuj_wykresy.SINR_NLOS[t]); //na dB
  404.  
  405.  
  406.             rysuj_wykresy.SINR_LOS[t] = S_0_LOS[t] / ( I_suma_LOS + N_W);
  407.             rysuj_wykresy.SINR_dB_LOS[t] = 10*Math.log10(rysuj_wykresy.SINR_LOS[t]); //na dB
  408.  
  409.         }
  410.         System.out.println("SINR_dB_NLOS dla t = 0 " + rysuj_wykresy.SINR_dB_NLOS[0]);
  411.         System.out.println("SINR_dB_LOS dla t = 0 " + rysuj_wykresy.SINR_dB_LOS[0]);
  412.  
  413.         System.out.println("SINR_dB_NLOS dla t = 850 " + rysuj_wykresy.SINR_dB_NLOS[849]);
  414.         System.out.println("SINR_dB_LOS dla t = 850 " + rysuj_wykresy.SINR_dB_LOS[849]);
  415.  
  416.         rysuj_wykresy.dane(0); //K == 0 - > NLOS
  417.         rysuj_wykresy.dane(1); //K == 1 -> LOS
  418.         rysuj_wykresy.Rysuj_wykres();
  419.     }
  420. }
  421.  
RAW Paste Data