Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eti.radio.pr_inz;
- import javax.imageio.ImageIO;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.util.Random;
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.ChartPanel;
- import org.jfree.chart.ChartUtils;
- import org.jfree.chart.JFreeChart;
- import org.jfree.chart.axis.NumberTickUnit;
- import org.jfree.chart.axis.ValueAxis;
- import org.jfree.chart.plot.Plot;
- import org.jfree.chart.plot.PlotOrientation;
- import org.jfree.data.xy.XYDataset;
- import org.jfree.data.xy.XYSeries;
- import org.jfree.data.xy.XYSeriesCollection;
- public class Wykresy extends JPanel implements ActionListener {
- //
- public Double[] xp = new Double[850];
- public Double[] yp = new Double[850];
- public Integer[] x = {470, 300, 300, 470, 640, 640, 470};
- public Integer[] y = {400, 480, 313, 230, 313, 480, 570};
- public double UT_x, UT_y;
- public double BS0_x = x[0], BS0_y = y[0];
- public double zasieg;
- int nw = 0, s = 1;
- //double f_c = 2.6; // [GHz] *Math.pow(10, 9);
- double d_2D; //m
- double c = 3*Math.pow(10, 8);
- int d_2D_IN = 1;
- int h_BS = 25, h_UT = 1; ///zrobić jako Slidery
- int h_E = 1; // 1m
- int h = 5; //w metrach, do RMa
- int W = 20; //w metrach, do RMa
- double sigma_LOS, sigma_NLOS;
- public Double[][] PL_LOS= new Double[7][850];
- public Double[][] PL_NLOS= new Double[7][850];
- public Double[][] PL_NLOS2= new Double[7][850];
- double d_BP, d2_BP;
- public Double[] p = {10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0};
- public Double[] d2D = {10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0};
- public Double[][] d_3D = new Double[7][850];
- public Double[] radius = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
- public Double[] SNR = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
- public Double[] SNR_WAT = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
- public double I_suma_NLOS = 0, I_suma_LOS = 0;
- double N = -174;
- double N_W = Math.pow(10, (N/10 - 3));
- //
- private JButton wyjscie;
- private JLabel tytul7;
- public JTabbedPane tabbedPane;
- public String nazwaModelu = "";
- public BufferedImage tlo_wykresy;
- public double f_c = 3; //GHz
- Double[] SINR_NLOS = new Double[850];
- Double[] SINR_LOS = new Double[850];
- Double[] SINR_dB_NLOS = new Double[850];
- Double[] SINR_dB_LOS = new Double[850];
- public int nr_tytulu = 0;
- public Wykresy(){
- setLayout(null);
- setVisible(true);
- for(int i=0; i < 850; i++){ // zerowanie SINRów, chyba jednak nie ma znaczenia
- SINR_NLOS[i] = 0.0;
- SINR_LOS[i] = 0.0;
- SINR_dB_NLOS[i] = 0.0;
- SINR_dB_LOS[i] = 0.0;
- }
- File zdj_menu = new File("zdjecia/strona.png");
- try{ tlo_wykresy = ImageIO.read(zdj_menu); }
- catch(IOException e){ System.err.println("Blad odczytu obrazków"); }
- tytul7 = new JLabel( "Wykresy przedstawiające wartość SINR zależną od odległości UT od BS ", JLabel.CENTER);
- tytul7.setBounds(5, 70, 1000, 100);
- tytul7.setFont(new Font("Sitka Text", Font.BOLD, 25));
- wyjscie = new JButton("Wyjście");
- wyjscie.addActionListener(this);
- wyjscie.setBounds(750, 650, 180, 50);
- wyjscie.setFont(new Font("Sitka Text", Font.BOLD, 25));
- wyjscie.setBackground(Color.white);
- tabbedPane = new JTabbedPane();
- add(tabbedPane); add(tytul7); add(wyjscie);
- }
- public XYDataset daneNLOS(){
- XYSeriesCollection zbior_danych = new XYSeriesCollection();
- XYSeries dane = new XYSeries("");
- for(int i=0; i < 850; i++){
- dane.add(i, SINR_dB_NLOS[i]);
- }
- zbior_danych.addSeries(dane);
- return zbior_danych;
- }
- public XYDataset daneLOS(){
- XYSeriesCollection zbior_danych = new XYSeriesCollection();
- XYSeries dane = new XYSeries("");
- for(int i=0; i < 850; i++){
- dane.add(i, SINR_dB_LOS[i]);
- }
- zbior_danych.addSeries(dane);
- return zbior_danych;
- }
- ///////////////////////////////////////////////
- public XYDataset daneNLOS_zaniki(){
- XYSeriesCollection zbior_danych = new XYSeriesCollection();
- XYSeries dane = new XYSeries("");
- for(int i=0; i < 850; i++){
- dane.add(i, SINR_dB_LOS[i]);
- }
- zbior_danych.addSeries(dane);
- return zbior_danych;
- }
- public XYDataset daneLOS_zaniki(){
- XYSeriesCollection zbior_danych = new XYSeriesCollection();
- XYSeries dane = new XYSeries("");
- for(int i=0; i < 850; i++){
- dane.add(i, SINR_dB_LOS[i]);
- }
- zbior_danych.addSeries(dane);
- return zbior_danych;
- }
- //////////////////////////////////////////////
- public void Rysuj_wykres(){
- XYDataset dane_NLOS = daneNLOS(); //dodawanie wartości SINR
- JFreeChart wykres_1 = ChartFactory.createXYLineChart("Funkcja wartości SINR od odległości od stacji bazowej (scenariusz NLOS)",
- "d [m]",
- "SINR [dB]",
- dane_NLOS,
- PlotOrientation.VERTICAL,
- true, true, false);
- /////////////////////////
- /* ValueAxis rangeAxis = wykres_1.getXYPlot().getDomainAxis();
- rangeAxis.setRange(0.0, 80.0);
- rangeAxis.setAutoTickUnitSelection(true);
- ValueAxis domainAxis = wykres_1.getXYPlot().getRangeAxis();
- if(s == 1){domainAxis.setRange(0, 1000);}
- else if(s == 2){ domainAxis.setRange(0, 1000);}
- else if(s == 3){ domainAxis.setRange(0, 1000);}
- else if(s == 4){ domainAxis.setRange(0, 650);}
- else if(s == 5){ domainAxis.setRange(0, 650);}
- else if(s == 6){ domainAxis.setRange(0, 5000);}
- else if(s == 7){ domainAxis.setRange(0, 5000);}
- domainAxis.setAutoTickUnitSelection(true);*/
- /////////////////////////////////////////
- ChartPanel chPanel_1 = new ChartPanel(wykres_1);
- XYDataset dane_LOS = daneLOS(); //dodawanie wartości SINR
- JFreeChart wykres_2 = ChartFactory.createXYLineChart("Funkcja wartości SINR od odległości od stacji bazowej (scenariusz LOS)",
- "d [m]",
- "SINR [dB]",
- dane_LOS,
- PlotOrientation.VERTICAL,
- true, true, false);
- ChartPanel chPanel_2 = new ChartPanel(wykres_2);
- ///////////////////////////////////////////////////////
- XYDataset dane_NLOS_zaniki = daneNLOS_zaniki(); //dodawanie wartości SINR
- JFreeChart wykres_3 = ChartFactory.createXYLineChart("Funkcja wartości SINR od odległości od stacji bazowej z uwzględnieniem zaników powolnych (scenariusz NLOS)",
- "d [m]",
- "SINR [dB]",
- dane_NLOS_zaniki,
- PlotOrientation.VERTICAL,
- true, true, false);
- ChartPanel chPanel_3 = new ChartPanel(wykres_3);
- XYDataset dane_LOS_zaniki = daneLOS_zaniki(); //dodawanie wartości SINR
- JFreeChart wykres_4 = ChartFactory.createXYLineChart("Funkcja wartości SINR od odległości od stacji bazowej z uwzględnieniem zaników powolnych (scenariusz LOS)",
- "d [m]",
- "SINR [dB]",
- dane_LOS_zaniki,
- PlotOrientation.VERTICAL,
- true, true, false);
- ChartPanel chPanel_4 = new ChartPanel(wykres_4);
- ///////////////////////////////////////////////////////
- SwingUtilities.invokeLater(() -> {
- chPanel_1.setBounds(1, 200, 520, 380);
- chPanel_1.setVisible(true);
- chPanel_2.setBounds(500, 200, 520, 380);
- chPanel_2.setVisible(true);
- chPanel_3.setBounds(500, 200, 520, 380);
- chPanel_3.setVisible(true);
- chPanel_4.setBounds(500, 200, 520, 380);
- chPanel_4.setVisible(true);
- });
- /////// JTabbedPane :
- //JTabbedPane tabbedPane = new JTabbedPane();
- tabbedPane.setBounds(130, 130, 750, 500);
- tabbedPane.addTab("Wykres NLOS", chPanel_1);
- tabbedPane.setMnemonicAt(0, KeyEvent.VK_2);
- tabbedPane.addTab("Wykres LOS", chPanel_2);
- tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);
- tabbedPane.addTab("Wykres NLOS z uwzględnieniem zaników", chPanel_3);
- tabbedPane.setMnemonicAt(2, KeyEvent.VK_2);
- tabbedPane.addTab("Wykres LOS z uwzględnieniem zaników", chPanel_4);
- tabbedPane.setMnemonicAt(3, KeyEvent.VK_2);
- tabbedPane.setVisible(true);
- //tytul7 = new JLabel( "Wykresy przedstawiające wartość SINR dla modelu " + nazwaModelu, JLabel.CENTER);
- //add(chPanel_1); add(chPanel_2); add(tytul7);
- add(tabbedPane);
- }
- public void actionPerformed(ActionEvent e){
- Object source = e.getSource();
- if(source == wyjscie){
- System.exit(0);
- }
- }
- public void paintComponent(Graphics graphic) {
- Graphics2D g2d = (Graphics2D) graphic;
- g2d.drawImage(tlo_wykresy, 0, 0, this);
- }
- public double PL_O2I(int n, double pl){
- double L_szklo = 2 + 0.2*f_c; //dB
- double L_beton = 5 + 4*f_c; //dB
- double PL_przeniki = 0;
- double PL_tw, PL_in, sigma_P;
- double N = 5; // !!!!!!!!!!!!!!!!!!! ZMIENIĆ
- PL_in = 0.5*d_2D_IN;
- if(n == 0){ //nisko stratny model
- PL_tw = 5 - Math.log10(0.3*Math.pow(10, (-L_szklo/10)) + 0.7*Math.pow(10, (-L_beton/10)));
- sigma_P = 4.4; //dB
- PL_przeniki = pl + PL_tw + PL_in; // + N;
- }
- else if(n == 1){ ////wysoko stratny model
- PL_tw = 5 - Math.log10(0.7*Math.pow(10, (-L_szklo/10)) + 0.3*Math.pow(10, (-L_beton/10)));
- sigma_P = 4.4; //dB
- PL_przeniki = pl + PL_tw + PL_in; // + N;
- }
- return PL_przeniki;
- }
- public double licz_sygnal_odebrany(double P_T, double G_TX, double L_FTX, double G_RX, double L_FRX, double PathL){
- //SINR = P_T + G_TX - L_FTX + (PL +I) + G_RX - L_FRX - N - F - IM
- int IM = 2;
- double S, t_e = 1, t_o = 290, N, F;
- //double k = 1.38*Math.pow(10, (-38)); //N = 10*Math.log10(k * t_o * pasmo); //N = -174; // [dBm]
- F = 6 ;
- S = P_T + G_TX - L_FTX - PathL + G_RX - L_FRX - F - IM; // [dBm]
- return S;
- }
- public void pathLossDlaModelu(double ut_x, double ut_y, double f, boolean zmiennaLosowa){
- if(s == 1){
- d_2D = 140;
- sigma_LOS = 3; //dB
- sigma_NLOS = 8.03; //dB
- }
- else if(s == 2){
- d_2D = 1000;
- sigma_LOS = 4; //dB
- sigma_NLOS = 6; //dB
- }
- else if(s == 3){
- d_2D = 1000;
- sigma_LOS = 4; //dB
- sigma_NLOS = 6; //dB
- }
- else if(s == 4 ){
- d_2D = 650;
- sigma_LOS = 4; //dB
- sigma_NLOS = 7.82; //dB
- }
- else if(s == 5){
- d_2D = 650;
- sigma_LOS = 4; //dB
- sigma_NLOS = 7.82; //dB
- }
- else if(s == 6){
- d_2D = 5000;
- if(d_2D >= 10 && d_2D <= d2_BP){sigma_LOS = 4;} //dB}
- else if(d_2D >= d2_BP && d_2D <= 21000){sigma_LOS = 6;} //dB}
- sigma_NLOS = 8;
- }
- else if(s == 7){
- d_2D = 5000;
- if(d_2D >= 10 && d_2D <= d2_BP){sigma_LOS = 4;} //dB}
- else if(d_2D >= d2_BP && d_2D <= 21000){sigma_LOS = 6;} //dB}
- sigma_NLOS = 8;
- }
- for(int k = 1; k < 7; k++){
- xp[0] = 470.0;
- yp[0] = 400.0;
- radius[k] = Math.sqrt( Math.pow((x[k] - xp[0]), 2) + Math.pow((y[k] - yp[0]), 2));
- d2D[k] = (radius[k]*d_2D)/85;
- d_3D[k][0] = Math.sqrt( Math.pow((h_BS-h_UT), 2) + Math.pow(d2D[k], 2) );
- System.out.println("d_3D["+k+"] = " + d_3D[k][0]);
- }
- d_3D[0][0] = Math.sqrt( Math.pow((h_BS-h_UT), 2) + Math.pow(Double.MIN_VALUE, 2) );
- //d_3D[0][0] = Double.MIN_VALUE; //!!!!!!!!!
- for(int j=1; j < 850; j++){
- if((ut_x > BS0_x) && (ut_y < BS0_y)){ // I ćwiartka
- xp[j] = xp[j-1] + 0.1;
- yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
- }
- else if((ut_x < BS0_x) && (ut_y < BS0_y)){ // II ćwiartka
- xp[j] = xp[j-1] - 0.1;
- yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
- }
- else if((ut_x < BS0_x) && (ut_y > BS0_y)){ // III ćwiartka
- xp[j] = xp[j-1] - 0.1;
- yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
- }
- else if((ut_x > BS0_x) && (ut_y > BS0_y)){ // IV ćwiartka
- xp[j] = xp[j-1] + 0.1;
- yp[j] = ((-1)*(ut_y - y[0])/(ut_x - x[0])) * (xp[j] - x[0]) + y[0]; // (-1) bo y rośnie w dół
- }
- for(int i = 0; i < 7; i++){
- radius[i] = Math.sqrt( Math.pow((x[i] - xp[j]), 2) + Math.pow((y[i] - yp[j]), 2));
- d2D[i] = (radius[i] * d_2D)/85; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
- d_3D[i][j] = Math.sqrt( Math.pow((h_BS-h_UT), 2) + Math.pow(d2D[i], 2) );
- }
- }
- if(s == 1){ //model Indoor Hotspot - InH
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- PL_LOS[i][j] = 32.4 + 17.3*Math.log10(d_3D[i][j]) + 20*Math.log10(f + 0.1*i); //- path loss for LOS
- PL_NLOS2[i][j] = 38.3*Math.log10(d_3D[i][j]) + 17.3 + 24.9*Math.log10(f + 0.1*i);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]); //- path loss for NLOS
- }
- }
- /*sigma_LOS = 3; //dB
- sigma_NLOS = 8.03; //dB*/
- }
- else if(s == 2 || s == 3){ //model Urban Macro- UMa
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- if( d_2D >= 10 && d_2D <= d_BP){
- PL_LOS[i][j] = 28 + 22*Math.log10(d_3D[i][j]) + 20*Math.log10(f + 0.1*i);
- PL_NLOS2[i][j] = 13.54 + 39.08*Math.log10(d_3D[i][j]) + 20*Math.log10(f + 0.1*i) -0.6*(h_UT-1.5);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
- }
- else if(d_2D >= d_BP && d_2D <= 5000){
- PL_LOS[i][j] = 28 + 40*Math.log10(d_3D[i][j]) + 20*Math.log10(f + 0.1*i) -9*Math.log10(Math.pow(d_BP,2) + Math.pow((h_BS + h_UT),2));
- PL_NLOS2[i][j] = 13.54 + 39.08*Math.log10(d_3D[i][j]) + 20*Math.log10(f + 0.1*i) -0.6*(h_UT-1.5);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
- }
- }
- }
- /*sigma_LOS = 4; //dB
- sigma_NLOS = 6; //dB*/
- if(s == 3) {
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- PL_LOS[i][j] = PL_O2I(nw, PL_LOS[i][j]);
- PL_NLOS[i][j] = PL_O2I(nw, PL_NLOS[i][j]);
- }
- }
- }
- }
- else if(s == 4 || s == 5){ //model Urban Micro- UMi
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- if( d_2D >= 10 && d_2D <= d_BP){
- PL_LOS[i][j] = 32.4 + 21*Math.log10(d_3D[i][j]) + 20*Math.log10(f);
- PL_NLOS2[i][j] = 22.4 + 35.3*Math.log10(d_3D[i][j]) + 21.3*Math.log10(f) -0.3*(h_UT-1.5);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
- }
- else if(d_2D >= d_BP && d_2D <= 5000){
- PL_LOS[i][j] = 32.4 + 40*Math.log10(d_3D[i][j]) + 20*Math.log10(f) -9.5*Math.log10(Math.pow(d_BP,2) + Math.pow((h_BS + h_UT),2));
- PL_NLOS2[i][j] = 22.4 + 35.3*Math.log10(d_3D[i][j]) + 21.3*Math.log10(f) -0.3*(h_UT-1.5);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
- }
- }
- }
- sigma_LOS = 4; //dB
- sigma_NLOS = 7.82; //dB
- if(s == 5) {
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- PL_LOS[i][j] = PL_O2I(nw, PL_LOS[i][j]);
- PL_NLOS[i][j] = PL_O2I(nw, PL_NLOS[i][j]);
- }
- }
- }
- }
- else if(s == 6 || s == 7) { //model Rural Macro- RMa
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- if (d_2D >= 10 && d_2D <= d2_BP) {
- PL_LOS[i][j] = 20 * Math.log10((40 * Math.PI * d_3D[i][j] * f) / 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];
- 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) - (3.2 *Math.pow(Math.log10(11.75 * h_UT), 2) - 4.97);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
- sigma_LOS = 4; //dB
- } else if (d_2D >= d2_BP && d_2D <= 21000) {
- PL_LOS[i][j] = 20 * Math.log10((40 * Math.PI * d2_BP * f) / 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);
- 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) - (3.2 *Math.pow(Math.log10(11.75 * h_UT), 2) - 4.97);
- PL_NLOS[i][j] = Math.max(PL_LOS[i][j], PL_NLOS2[i][j]);
- sigma_LOS = 6; //dB
- }
- }
- }
- sigma_NLOS = 8; //dB
- if (s == 7) {
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- PL_LOS[i][j] = PL_O2I(nw, PL_LOS[i][j]);
- PL_NLOS[i][j] = PL_O2I(nw, PL_NLOS[i][j]);
- System.out.println("Udało się, yaaaaaaaaaaaaaaaaaaaaaaaaay!");
- }
- }
- }
- }
- Random r = new Random();
- if(zmiennaLosowa == true){
- for(int j = 0; j < 850; j++){
- for(int i=0; i < 7; i++){
- PL_LOS[i][j] = PL_LOS[i][j] + r.nextGaussian()*sigma_LOS;
- PL_NLOS[i][j] = PL_NLOS[i][j] + r.nextGaussian()*sigma_NLOS;
- }
- }
- }
- }
- public void licz_SINR(){
- Double[] S_NLOS = new Double[7];
- Double[] S_LOS = new Double[7];
- Double[] I_W_NLOS = new Double[7]; //inerferencje w watach
- Double[] I_W_LOS = new Double[7]; //inerferencje w watach
- Double[] S_0_NLOS = new Double[850];
- Double[] S_0_LOS = new Double[850];
- for(int t=0; t < 850; t++){
- for (int i = 0; i < 7; i++) {
- if(i == 0){
- if(t==0){
- S_NLOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, 0);
- S_LOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, 0); //LOS tylko między UT i BS0
- }
- S_NLOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, PL_NLOS[i][t]);
- S_LOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, PL_LOS[i][t]); //LOS tylko między UT i BS0
- }
- else{
- S_NLOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, PL_NLOS[i][t]);
- S_LOS[i] = licz_sygnal_odebrany(p[i], 17, 2, 0, 0, PL_NLOS[i][t]);
- }
- }
- S_0_NLOS[t] = Math.pow(10, (S_NLOS[0]/10 - 3)); // z dBm na waty
- I_W_NLOS[0] = 0.0;
- I_suma_NLOS = 0.0;
- S_0_LOS[t] = Math.pow(10, (S_LOS[0]/10 - 3)); // z dBm na waty
- I_W_LOS[0] = 0.0;
- I_suma_LOS = 0.0;
- for(int j=1; j < 7; j++){
- I_W_NLOS[j] = Math.pow(10, S_NLOS[j]/10 - 3); // z dBm na waty
- I_suma_NLOS = I_suma_NLOS + I_W_NLOS[j];
- I_W_LOS[j] = Math.pow(10, (S_LOS[j]/10 - 3)); // z dBm na waty
- I_suma_LOS = I_suma_LOS + I_W_LOS[j];
- }
- SINR_NLOS[t] = S_0_NLOS[t] / ( I_suma_NLOS + N_W);
- SINR_dB_NLOS[t] = 10*Math.log10(SINR_NLOS[t]); //na dB
- SINR_LOS[t] = S_0_LOS[t] / ( I_suma_LOS + N_W);
- SINR_dB_LOS[t] = 10*Math.log10(SINR_LOS[t]); //na dB
- }
- System.out.println("SINR_dB_NLOS dla t = 0 " + SINR_dB_NLOS[0]);
- System.out.println("SINR_dB_LOS dla t = 0 " + SINR_dB_LOS[0]);
- System.out.println("SINR_dB_NLOS dla t = 850 " + SINR_dB_NLOS[849]);
- System.out.println("SINR_dB_LOS dla t = 850 " + SINR_dB_LOS[849]);
- System.out.println("d_3D[0][0]: " + d_3D[0][0] + "d_3D[0][1]: " + d_3D[0][1] );
- }
- public void zaniki(){
- pathLossDlaModelu(UT_x, UT_y, f_c, true);
- licz_SINR();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement