{"id":3096,"date":"2021-03-11T18:40:50","date_gmt":"2021-03-11T23:40:50","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=3096"},"modified":"2021-03-12T14:39:49","modified_gmt":"2021-03-12T19:39:49","slug":"puntos-de-prueba-vs-modelo-de-propagacion","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/puntos-de-prueba-vs-modelo-de-propagacion\/","title":{"rendered":"6.1 Puntos de prueba vs Modelo de propagaci\u00f3n"},"content":{"rendered":"<p>Una revisi\u00f3n del modelo de propagaci\u00f3n encontrado con los <strong>puntos de entrenamiento<\/strong> se puede realizar con<strong> puntos de prueba<\/strong>. Las lecturas de los puntos de prueba se realizaron dos semanas despu\u00e9s de los puntos de entrenamiento.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/Rssi_dist_GtwFIEC_S0_Pprueba01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3173 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/Rssi_dist_GtwFIEC_S0_Pprueba01.png\" alt=\"\" width=\"1086\" height=\"613\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/Rssi_dist_GtwFIEC_S0_Pprueba01.png 1086w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/Rssi_dist_GtwFIEC_S0_Pprueba01-300x169.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/Rssi_dist_GtwFIEC_S0_Pprueba01-768x434.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/Rssi_dist_GtwFIEC_S0_Pprueba01-1024x578.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Los <strong>puntos de prueba<\/strong> tienen <strong>una lectura<\/strong> a cada baliza, a diferencia de al menos cien de los puntos de entrenamiento.<\/p>\n<p>En la revisi\u00f3n se encuentra que los puntos de prueba se encuentran en el rango de las mediciones del modelo, sin embargo los puntos se encuentran distribuidos en la gr\u00e1fica desplazados hacia arriba del modelo, indicando que es necesario incorporar m\u00e1s variables para ajustar el modelo, por ejemplo la temperatura del entorno u otra variable que se determinar\u00eda en una siguiente fase del experimento.<\/p>\n<p>Para cuantificar el desplazamiento \u0394rssi, se calcula el error entre cada punto y la ecuaci\u00f3n modelo. Bajo el concepto que los errores se distribuyen equitativamente sobre y debajo la ecuaci\u00f3n, se obtiene el valor de la mediana que indica el desplazamiento m\u00e1s optimo como ajuste al modelo bajo las nuevas condiciones.<\/p>\n<p>Revisando la aplicabilidad del modelo, se obtiene el coeficiente de correlaci\u00f3n para los puntos de prueba clasificados en gtwFIEC, que es de -0.88 que permite estimar que se puede aplicar relaci\u00f3n lineal con pendiente negativa en el intervalo.<\/p>\n<pre>gtwFIEC s0 r0  error_mediana: 5.99 correlacion: -0.88\r\ngtwFIEC s0 r1  error_mediana: 7.14 correlacion: -0.68\r\ngtwFIEC s0 r2  error_mediana: 1.98 correlacion: -0.76\r\n<\/pre>\n<p>Se puede proseguir con los otros puntos de prueba para las otras balizas, encontrando que en la baliza gtwRECT los mejores valores de correlaci\u00f3n con los datos disponibles tan dado en el \u00e1rea de vegetaci\u00f3n sin sombra.\u00a0 El modelo estimado en vegetaci\u00f3n para la zona con sombra debe ser revisados pues hay un valores cercanos a cero en correlaci\u00f3n, por lo que la linealizaci\u00f3n con los datos puede ser insuficiente para estimar que hay una relaci\u00f3n lineal entre las dos variables. Se requiere en ese caso expandir la toma de muestra y revisar con mas datos el modelo.<\/p>\n<pre>Desplazamientos de puntos de prueba\r\n respecto al modelo:\r\n[baliza,sector,intervalo,drssi]\r\ngtwRECT s0 r0  error_mediana: 7.8 correlacion: -0.54\r\ngtwRECT s0 r1  error_mediana: 5.55 correlacion: -0.13\r\ngtwRECT s0 r2  error_mediana: 9.3 correlacion: -0.47\r\ngtwRECT s1 r0  error_mediana: 3.7 correlacion: 0.13\r\ngtwRECT s1 r1  error_mediana: 3.7 correlacion: 0.13\r\ngtwFIEC s0 r0  error_mediana: 5.99 correlacion: -0.88\r\ngtwFIEC s0 r1  error_mediana: 7.14 correlacion: -0.68\r\ngtwFIEC s0 r2  error_mediana: 1.98 correlacion: -0.76\r\ngtwFCNM s0 r0  error_mediana: 8.56 correlacion: -0.76\r\ngtwFCNM s0 r1  error_mediana: 6.59 correlacion: -0.75\r\ngtwFCNM s0 r2  error_mediana: 9.98 correlacion: -0.29\r\n<\/pre>\n<hr \/>\n<h2>Algoritmo en Python<\/h2>\n<p>Se adjunta el algoritmo correspondiente:<\/p>\n<pre><span style=\"color: #ff0000\"># LoRa-Multipunto, Revisa grafica Rssi vs distancia<\/span>\r\n<span style=\"color: #ff0000\"># con puntos de prueba 'CIRC'<\/span>\r\n<span style=\"color: #ff0000\"># linealizaci\u00f3n Rssi vs log10(distancia) por m\u00ednimos cuadrados<\/span>\r\n<span style=\"color: #ff0000\"># Graficas 2D y 3D<\/span>\r\n<span style=\"color: #ff0000\"># Girni 2020-01-30 propuesta: edelros@espol.edu.ec<\/span>\r\n\r\n<span style=\"color: #d35400\">import<\/span> numpy <span style=\"color: #d35400\">as<\/span> np\r\n<span style=\"color: #d35400\">import<\/span> pandas <span style=\"color: #d35400\">as<\/span> pd\r\n<span style=\"color: #d35400\">import<\/span> json\r\n<span style=\"color: #d35400\">import<\/span> matplotlib.pyplot <span style=\"color: #d35400\">as<\/span> plt\r\n<span style=\"color: #d35400\">import<\/span> girni_lora_libreria <span style=\"color: #d35400\">as<\/span> girni\r\n\r\n<span style=\"color: #ff0000\"># INGRESO<\/span>\r\n<span style=\"color: #ff0000\"># archivos de entrada<\/span>\r\nmodo       = <span style=\"color: #008000\">'rx'<\/span>\r\nmedida     = <span style=\"color: #008000\">'rssi'<\/span>\r\ndescriptor = <span style=\"color: #008000\">'mean'<\/span>\r\narch_ecuaciones  = <span style=\"color: #008000\">'rsmP07_ecuacionSector01.json'<\/span>\r\narch_medidaubica = <span style=\"color: #008000\">'rsmP06_'<\/span>+medida+<span style=\"color: #008000\">'UbicaCirc01.txt'<\/span>\r\n<span style=\"color: #ff0000\"># archivos de salida<\/span>\r\narch_ecuaciones2  = <span style=\"color: #008000\">'rsmP07_ecuacionSector02.json'<\/span>\r\n\r\n\r\nbaliza = {<span style=\"color: #008000\">'d1'<\/span>:<span style=\"color: #008000\">'gtwRECT'<\/span>,\r\n          <span style=\"color: #008000\">'d2'<\/span>:<span style=\"color: #008000\">'gtwFIEC'<\/span>,\r\n          <span style=\"color: #008000\">'d3'<\/span>:<span style=\"color: #008000\">'gtwFCNM'<\/span>}\r\n\r\n<span style=\"color: #ff0000\"># Par\u00e1metros de grafica<\/span>\r\ntipograf      = <span style=\"color: #008000\">'2D'<\/span>  <span style=\"color: #ff0000\"># '2D','3D'<\/span>\r\nescala        = <span style=\"color: #008000\">'log'<\/span> <span style=\"color: #ff0000\"># 'normal','log'<\/span>\r\nescalabase    = 10    <span style=\"color: #ff0000\"># 10, np.exp()<\/span>\r\ncasicero   = 1e-4\r\nprecision  = 2\r\nintersectar = 0 <span style=\"color: #ff0000\"># 0:Falso, 1: Verdadero<\/span>\r\n\r\n<span style=\"color: #ff0000\"># Referencias de gr\u00e1fica<\/span>\r\ngrupo   = [<span style=\"color: #008000\">'FIEC'<\/span> ,<span style=\"color: #008000\">'FCNM'<\/span>  ,<span style=\"color: #008000\">'RECT'<\/span>,<span style=\"color: #008000\">'CIRC'<\/span>]\r\ncolores = [<span style=\"color: #008000\">'green'<\/span>,<span style=\"color: #008000\">'orange'<\/span>,<span style=\"color: #008000\">'grey'<\/span>,<span style=\"color: #008000\">'magenta'<\/span>]\r\ntipo    = [<span style=\"color: #008000\">'punto'<\/span>,<span style=\"color: #008000\">'1m'<\/span> ,<span style=\"color: #008000\">'gtw'<\/span>,<span style=\"color: #008000\">'dispositivo'<\/span>]\r\nmarcas  = [    <span style=\"color: #008000\">'o'<\/span>,<span style=\"color: #008000\">'D'<\/span>  ,<span style=\"color: #008000\">'D'<\/span>  ,<span style=\"color: #008000\">'*'<\/span> ]\r\n\r\nmostrargrpeti = [<span style=\"color: #008000\">'FIEC'<\/span>,<span style=\"color: #008000\">'FCNM'<\/span>,<span style=\"color: #008000\">'RECT'<\/span>]\r\nmostrartipeti = [<span style=\"color: #008000\">'1m'<\/span>,<span style=\"color: #008000\">'gtw'<\/span>]\r\n\r\n<span style=\"color: #ff0000\"># PROCEDIMIENTO<\/span>\r\n<span style=\"color: #ff0000\"># leer datos<\/span>\r\n<span style=\"color: #d35400\">with<\/span> <span style=\"color: #ff00ff\">open<\/span>(arch_ecuaciones) <span style=\"color: #d35400\">as<\/span> json_file: \r\n    ecuacion = json.load(json_file) \r\ntabla = pd.read_csv(arch_medidaubica, index_col=<span style=\"color: #008000\">'etiqueta'<\/span>)\r\ntabla = pd.DataFrame(tabla)\r\n\r\nbaliza_key = <span style=\"color: #ff00ff\">list<\/span>(baliza.keys())\r\nbaliza_val = <span style=\"color: #ff00ff\">list<\/span>(baliza.values())\r\neq_graf  = {}\r\n\r\n<span style=\"color: #ff0000\"># Revisa un sector_estimado<\/span>\r\n<span style=\"color: #d35400\">for<\/span> cualbaliza <span style=\"color: #d35400\">in<\/span> baliza:\r\n    sector_baliza = <span style=\"color: #008000\">'sector_'<\/span>+cualbaliza\r\n    tabla[sector_baliza] = 0\r\n<span style=\"color: #d35400\">for<\/span> cadapunto <span style=\"color: #d35400\">in<\/span> tabla.index:\r\n    <span style=\"color: #d35400\">for<\/span> cualbaliza <span style=\"color: #d35400\">in<\/span> baliza:\r\n        <span style=\"color: #ff0000\"># evalua en sector<\/span>\r\n        sector_baliza = <span style=\"color: #008000\">'sector_'<\/span>+cualbaliza\r\n        donde = baliza_key.index(cualbaliza)\r\n        <span style=\"color: #ff0000\"># coordenadas baliza para identificar \u00e1ngulo<\/span>\r\n        b_este  = tabla[<span style=\"color: #008000\">'c_este'<\/span>][baliza[cualbaliza]]\r\n        b_norte = tabla[<span style=\"color: #008000\">'c_norte'<\/span>][baliza[cualbaliza]]\r\n        <span style=\"color: #ff0000\"># coordenadas del punto<\/span>\r\n        p_este  = tabla[<span style=\"color: #008000\">'c_este'<\/span>][cadapunto]\r\n        p_norte = tabla[<span style=\"color: #008000\">'c_norte'<\/span>][cadapunto]\r\n        dx = p_este-b_este\r\n        dy = p_norte-b_norte\r\n        theta = np.arctan2(dy,dx)\r\n        <span style=\"color: #d35400\">if<\/span> theta&lt;0:\r\n            theta = theta + 2*np.pi\r\n        sectores   =  ecuacion[baliza[cualbaliza]][<span style=\"color: #008000\">'sector_rad'<\/span>]\r\n        nsectores  = <span style=\"color: #ff00ff\">len<\/span>(sectores)\r\n        otrosector = <span style=\"color: #008000\">''<\/span>\r\n        <span style=\"color: #d35400\">for<\/span> i <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">range<\/span>(0,nsectores-1,1):\r\n            a = sectores[i]\r\n            b = sectores[i+1]\r\n            <span style=\"color: #d35400\">if<\/span> theta&gt;=a <span style=\"color: #d35400\">and<\/span> theta&lt;b:\r\n                otrosector = i+1\r\n        <span style=\"color: #d35400\">if<\/span> otrosector !=<span style=\"color: #008000\">''<\/span>:\r\n            tabla.loc[cadapunto,<span style=\"color: #008000\">'sector_'<\/span>+cualbaliza] = otrosector\r\n\r\n<span style=\"color: #ff0000\"># analiza datos hacia una baliza<\/span>\r\n<span style=\"color: #d35400\">for<\/span> unabaliza <span style=\"color: #d35400\">in<\/span> ecuacion:\r\n    donde = baliza_val.index(unabaliza)\r\n    cualbaliza = baliza_key[donde]\r\n    \r\n    eq_graf[unabaliza] = {}\r\n    <span style=\"color: #d35400\">for<\/span> unsector <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza].keys()):  \r\n        <span style=\"color: #d35400\">if<\/span> unsector != <span style=\"color: #008000\">'sector_rad'<\/span>:\r\n            eq_graf[unabaliza][unsector] = {}\r\n            <span style=\"color: #d35400\">for<\/span> i_eq <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza][unsector].keys()):\r\n                eq_graf[unabaliza][unsector][i_eq] = {} \r\n\r\n    <span style=\"color: #ff0000\"># puntos de tabla<\/span>\r\n    <span style=\"color: #d35400\">for<\/span> unsector <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza].keys()):\r\n        <span style=\"color: #d35400\">if<\/span> unsector != <span style=\"color: #008000\">'sector_rad'<\/span>:\r\n            xi_p = [] ; yi_p = []\r\n            xi = [] ; yi = [] ; etiqueta = []\r\n            columna = medida+<span style=\"color: #008000\">'_'<\/span>+modo+<span style=\"color: #008000\">'_'<\/span>+cualbaliza\r\n            <span style=\"color: #d35400\">for<\/span> cadapunto <span style=\"color: #d35400\">in<\/span> tabla.index:\r\n                p_rssi = np.round(tabla[columna][cadapunto], precision)\r\n                dist   = np.round(tabla[<span style=\"color: #008000\">'dist_'<\/span>+cualbaliza][cadapunto], precision)\r\n                ensector = <span style=\"color: #008000\">'s'<\/span>+<span style=\"color: #ff00ff\">str<\/span>(tabla[<span style=\"color: #008000\">'sector_'<\/span>+cualbaliza][cadapunto])\r\n                LOS = tabla[<span style=\"color: #008000\">'LOS_'<\/span>+cualbaliza][cadapunto]\r\n                <span style=\"color: #d35400\">if<\/span> <span style=\"color: #d35400\">not<\/span>(np.isnan(p_rssi)) <span style=\"color: #d35400\">and<\/span> dist&gt;1 <span style=\"color: #d35400\">and<\/span> LOS==1 <span style=\"color: #d35400\">and<\/span> unsector==ensector:\r\n                    yi_p.append(p_rssi)\r\n                    xi_p.append(dist)\r\n                    etiqueta.append(cadapunto)\r\n                    <span style=\"color: #d35400\">if<\/span> <span style=\"color: #d35400\">not<\/span>(dist <span style=\"color: #d35400\">in<\/span> xi):\r\n                        xi.append(dist)\r\n                        yi.append(p_rssi)\r\n                    \r\n            xi_p = np.array(xi_p)\r\n            yi_p = np.array(yi_p)\r\n            ordenar = np.argsort(xi_p)\r\n            xi_p = <span style=\"color: #ff00ff\">list<\/span>(xi_p[ordenar])\r\n            yi_p = <span style=\"color: #ff00ff\">list<\/span>(yi_p[ordenar])\r\n            etiqueta = np.array(etiqueta)\r\n            etiqueta = etiqueta[ordenar]\r\n\r\n            xi = np.array(xi)\r\n            yi = np.array(yi)\r\n            ordenar = np.argsort(xi)\r\n            xi = xi[ordenar]\r\n            yi = yi[ordenar]\r\n\r\n            i_eq = <span style=\"color: #008000\">'r0'<\/span> <span style=\"color: #ff0000\"># todos los puntos<\/span>\r\n            eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'xi'<\/span>] = xi_p.copy()\r\n            eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'yi'<\/span>] = yi_p.copy()\r\n            eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'etiqueta'<\/span>] = etiqueta.copy()\r\n                \r\n            \r\n            <span style=\"color: #ff0000\"># ecuacion linealizada<\/span>\r\n            <span style=\"color: #d35400\">for<\/span> i_eq <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza][unsector].keys()):\r\n                a = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'intervalox'<\/span>][0]\r\n                b = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'intervalox'<\/span>][1]\r\n                \r\n                alpha = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'alpha'<\/span>]\r\n                beta  = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'beta'<\/span>]\r\n                std   = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'error_std'<\/span>]\r\n                fdist = <span style=\"color: #d35400\">lambda<\/span> d: -10*alpha*(np.log10(d))+beta\r\n\r\n                subintervalo = (xi &gt;= a) &amp; (xi &lt;= b)\r\n                xi_s = xi[subintervalo]\r\n                yi_s = yi[subintervalo]\r\n\r\n                <span style=\"color: #ff0000\"># correlacion de los puntos<\/span>\r\n                correlacion = np.corrcoef(xi_s,yi_s)[0,1]\r\n                \r\n                <span style=\"color: #ff0000\"># dibujar la l\u00ednea en intervalo<\/span>\r\n                xi_sub = xi[subintervalo]\r\n                <span style=\"color: #d35400\">if<\/span> <span style=\"color: #d35400\">not<\/span>(a <span style=\"color: #d35400\">in<\/span> xi_sub):\r\n                    xi_sub = np.concatenate(([a],xi_sub),axis=0)\r\n                <span style=\"color: #d35400\">if<\/span> <span style=\"color: #d35400\">not<\/span>(b <span style=\"color: #d35400\">in<\/span> xi_sub):\r\n                    xi_sub = np.concatenate((xi_sub,[b]),axis=0)\r\n                yi_sub = fdist(xi_sub)\r\n\r\n                eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'xi_graf'<\/span>] = xi_sub.copy()\r\n                eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'yi_graf'<\/span>] = yi_sub.copy()\r\n\r\n                \r\n                <span style=\"color: #ff0000\"># Errores en subintervalo<\/span>\r\n                mediana = 0\r\n                <span style=\"color: #d35400\">if<\/span> intersectar == 0:\r\n                    yie_s = yi_s - fdist(xi_s)\r\n                    mediana = np.median(yie_s)\r\n                <span style=\"color: #d35400\">else<\/span>:\r\n                    <span style=\"color: #d35400\">if<\/span> i_eq==<span style=\"color: #008000\">'r0'<\/span>:\r\n                        yie_s = yi_s - fdist(xi_s)\r\n                        mediana = np.median(yie_s)\r\n                    <span style=\"color: #d35400\">else<\/span>:\r\n                        mediana = ecuacion[unabaliza][unsector][<span style=\"color: #008000\">'r0'<\/span>][<span style=\"color: #008000\">'desplaza'<\/span>]\r\n                                    \r\n                eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'desplaza'<\/span>] = mediana\r\n                eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'correlacion'<\/span>] = correlacion\r\n                ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'desplaza'<\/span>] = mediana\r\n                \r\n\r\n<span style=\"color: #ff0000\"># SALIDA<\/span>\r\n<span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">'Desplazamientos de puntos de prueba'<\/span>)\r\n<span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">' respecto al modelo:'<\/span>)\r\n<span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">'[baliza,sector,intervalo,drssi]'<\/span>)\r\n<span style=\"color: #d35400\">for<\/span> unabaliza <span style=\"color: #d35400\">in<\/span> ecuacion:\r\n    <span style=\"color: #d35400\">for<\/span> unsector <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza].keys()):  \r\n        <span style=\"color: #d35400\">if<\/span> unsector != <span style=\"color: #008000\">'sector_rad'<\/span>:\r\n            <span style=\"color: #d35400\">for<\/span> i_eq <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza][unsector].keys()):\r\n                mediana = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'desplaza'<\/span>]\r\n                mediana = np.round(mediana,precision)\r\n                correlacion = eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'correlacion'<\/span>]\r\n                correlacion = np.round(correlacion,precision)\r\n                texto = unabaliza + <span style=\"color: #008000\">' '<\/span>+unsector + <span style=\"color: #008000\">' '<\/span> + i_eq + <span style=\"color: #008000\">' '<\/span>\r\n                texto = texto + <span style=\"color: #008000\">' error_mediana: '<\/span>+ <span style=\"color: #ff00ff\">str<\/span>(mediana)\r\n                texto = texto + <span style=\"color: #008000\">' correlacion: '<\/span>+<span style=\"color: #ff00ff\">str<\/span>(correlacion)\r\n                <span style=\"color: #ff00ff\">print<\/span>(texto)\r\n\r\n<span style=\"color: #ff0000\"># salida hacia archivo<\/span>\r\n<span style=\"color: #d35400\">with<\/span> <span style=\"color: #ff00ff\">open<\/span>(arch_ecuaciones2, <span style=\"color: #008000\">'w'<\/span>) <span style=\"color: #d35400\">as<\/span> outfile:\r\n    json.dump(ecuacion, outfile) \r\n\r\n<span style=\"color: #ff0000\"># GRAFICA<\/span>\r\n<span style=\"color: #ff0000\"># Referencias para gr\u00e1fica<\/span>\r\ngrupo   = [<span style=\"color: #008000\">'FIEC'<\/span> ,<span style=\"color: #008000\">'FCNM'<\/span>  ,<span style=\"color: #008000\">'RECT'<\/span>,<span style=\"color: #008000\">'CIRC'<\/span>]\r\ncolores = [<span style=\"color: #008000\">'green'<\/span>,<span style=\"color: #008000\">'orange'<\/span>,<span style=\"color: #008000\">'grey'<\/span>,<span style=\"color: #008000\">'magenta'<\/span>]\r\ntipo    = [<span style=\"color: #008000\">'punto'<\/span>,<span style=\"color: #008000\">'1m'<\/span> ,<span style=\"color: #008000\">'gtw'<\/span>,<span style=\"color: #008000\">'dispositivo'<\/span>]\r\nmarcas  = [    <span style=\"color: #008000\">'o'<\/span>,<span style=\"color: #008000\">'D'<\/span>  ,<span style=\"color: #008000\">'D'<\/span>  ,<span style=\"color: #008000\">'*'<\/span> ]\r\n\r\nmostrargrpeti = [<span style=\"color: #008000\">'FIEC'<\/span>,<span style=\"color: #008000\">'FCNM'<\/span>,<span style=\"color: #008000\">'RECT'<\/span>]\r\nmostrartipeti = [<span style=\"color: #008000\">'1m'<\/span>,<span style=\"color: #008000\">'gtw'<\/span>]\r\n\r\n<span style=\"color: #d35400\">if<\/span> tipograf==<span style=\"color: #008000\">'2D'<\/span>:\r\n    <span style=\"color: #d35400\">for<\/span> unabaliza <span style=\"color: #d35400\">in<\/span> eq_graf:\r\n        <span style=\"color: #d35400\">for<\/span> unsector <span style=\"color: #d35400\">in<\/span> eq_graf[unabaliza]:\r\n            figura,grafica = plt.subplots()\r\n            <span style=\"color: #d35400\">if<\/span> escala == <span style=\"color: #008000\">'log'<\/span>:\r\n                grafica.set_xscale(escala,base=escalabase)\r\n                \r\n            eq_graf2 = {}\r\n            <span style=\"color: #ff0000\"># todos los puntos<\/span>\r\n            unintervalo = <span style=\"color: #008000\">'r0'<\/span>\r\n            xi_p = eq_graf[unabaliza][unsector][unintervalo][<span style=\"color: #008000\">'xi'<\/span>]\r\n            yi_p = eq_graf[unabaliza][unsector][unintervalo][<span style=\"color: #008000\">'yi'<\/span>]\r\n            etiqueta = eq_graf[unabaliza][unsector][unintervalo][<span style=\"color: #008000\">'etiqueta'<\/span>]\r\n            grafica.scatter(xi_p,yi_p,marker=<span style=\"color: #008000\">'.'<\/span>)\r\n            m = <span style=\"color: #ff00ff\">len<\/span>(xi_p)\r\n            <span style=\"color: #d35400\">for<\/span> i <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">range<\/span>(0,m,1):\r\n                grafica.annotate(etiqueta[i],\r\n                                (xi_p[i],yi_p[i]))\r\n                \r\n            <span style=\"color: #ff0000\"># linea con todos los puntos<\/span>\r\n            <span style=\"color: #d35400\">for<\/span> i_eq <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(eq_graf[unabaliza][unsector].keys()):\r\n                fdtxt   = ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'eq_latex'<\/span>]\r\n                xi_graf = eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'xi_graf'<\/span>]\r\n                yi_graf = eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'yi_graf'<\/span>]\r\n                a = np.round(ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'intervalox'<\/span>][0],precision)\r\n                b = np.round(ecuacion[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'intervalox'<\/span>][1],precision)\r\n                desplaza = eq_graf[unabaliza][unsector][i_eq][<span style=\"color: #008000\">'desplaza'<\/span>]\r\n                desplaza = np.round(desplaza,precision)\r\n                estilo = <span style=\"color: #008000\">'solid'<\/span>\r\n                <span style=\"color: #d35400\">if<\/span> i_eq ==<span style=\"color: #008000\">'r0'<\/span>:\r\n                    estilo = <span style=\"color: #008000\">'dashed'<\/span>\r\n                eq_texto = i_eq+<span style=\"color: #008000\">': '<\/span>+fdtxt+<span style=\"color: #008000\">' ; ['<\/span>+<span style=\"color: #ff00ff\">str<\/span>(a)+<span style=\"color: #008000\">','<\/span>+<span style=\"color: #ff00ff\">str<\/span>(b)+<span style=\"color: #008000\">']'<\/span>\r\n                grafica.plot(xi_graf,yi_graf,\r\n                             label = eq_texto,\r\n                             linestyle = estilo)\r\n                <span style=\"color: #ff0000\"># para linea desplazada<\/span>\r\n                eq_graf2[i_eq] = {<span style=\"color: #008000\">'xi'<\/span>:xi_graf,\r\n                              <span style=\"color: #008000\">'yi'<\/span>:yi_graf + desplaza,\r\n                              <span style=\"color: #008000\">'desplaza'<\/span>: desplaza}\r\n                \r\n                <span style=\"color: #ff0000\"># lineas de frontera<\/span>\r\n                grafica.axvline(a, color=<span style=\"color: #008000\">'lightblue'<\/span>)\r\n                valor_frontera = <span style=\"color: #ff00ff\">str<\/span>(np.round(a,precision))\r\n                grafica.annotate(valor_frontera,\r\n                                 (a,np.max(yi_p)),\r\n                                 color=<span style=\"color: #008000\">'lightblue'<\/span>)\r\n                grafica.axvline(b, color=<span style=\"color: #008000\">'lightblue'<\/span>)\r\n                valor_frontera = <span style=\"color: #ff00ff\">str<\/span>(np.round(b,precision))\r\n                grafica.annotate(valor_frontera,\r\n                                 (b,np.max(yi_p)),\r\n                                 color=<span style=\"color: #008000\">'lightblue'<\/span>)\r\n            <span style=\"color: #d35400\">for<\/span> i_eq <span style=\"color: #d35400\">in<\/span> <span style=\"color: #ff00ff\">list<\/span>(ecuacion[unabaliza][unsector].keys()):\r\n                estilo = <span style=\"color: #008000\">'solid'<\/span>\r\n                <span style=\"color: #d35400\">if<\/span> i_eq ==<span style=\"color: #008000\">'r0'<\/span>:\r\n                    estilo = <span style=\"color: #008000\">'dashed'<\/span>\r\n                xi = eq_graf2[i_eq][<span style=\"color: #008000\">'xi'<\/span>]\r\n                yi = eq_graf2[i_eq][<span style=\"color: #008000\">'yi'<\/span>]\r\n                desplaza = eq_graf2[i_eq][<span style=\"color: #008000\">'desplaza'<\/span>]\r\n                texto = i_eq + <span style=\"color: #008000\">' + $\\Delta $Rssi'<\/span>\r\n                texto = texto + <span style=\"color: #008000\">' ; $ \\Delta rssi$= '<\/span>+ <span style=\"color: #ff00ff\">str<\/span>(desplaza)\r\n                grafica.plot(xi,yi, label = texto,\r\n                             linestyle = estilo)\r\n        \r\n            <span style=\"color: #ff0000\"># etiquetas y t\u00edtulos<\/span>\r\n            grafica.legend()\r\n            grafica.set_ylabel(medida+<span style=\"color: #008000\">'_'<\/span>+modo)\r\n            grafica.set_xlabel(<span style=\"color: #008000\">'distancia'<\/span>)\r\n            grafica.grid(<span style=\"color: #d35400\">True<\/span>,linestyle=<span style=\"color: #008000\">'dotted'<\/span>,\r\n                         axis=<span style=\"color: #008000\">'x'<\/span>, which=<span style=\"color: #008000\">'both'<\/span>)\r\n            \r\n            untitulo = unabaliza+<span style=\"color: #008000\">' '<\/span>+unsector+<span style=\"color: #008000\">': Puntos de prueba desplazados'<\/span>\r\n            grafica.set_title(untitulo)\r\n            \r\n            plt.show()\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Una revisi\u00f3n del modelo de propagaci\u00f3n encontrado con los puntos de entrenamiento se puede realizar con puntos de prueba. Las lecturas de los puntos de prueba se realizaron dos semanas despu\u00e9s de los puntos de entrenamiento. Los puntos de prueba tienen una lectura a cada baliza, a diferencia de al menos cien de los puntos &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/puntos-de-prueba-vs-modelo-de-propagacion\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"6.1 Puntos de prueba vs Modelo de propagaci\u00f3n\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1463489],"tags":[],"class_list":["post-3096","post","type-post","status-publish","format-standard","hentry","category-localizacion-rssi-lora"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=3096"}],"version-history":[{"count":8,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3096\/revisions"}],"predecessor-version":[{"id":3180,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3096\/revisions\/3180"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=3096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=3096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=3096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}