Advertisement
martinius96

Kružnicová trilaterácia - MATLAB

Nov 3rd, 2021
725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 20.67 KB | None | 0 0
  1. %%Vyhotovil: Martin Chlebovec
  2. %%Predmet: Lokalizácia v bezdrôtových a mobilných sieťach
  3. %%Skupina: Pondelok 7:30
  4. %%Zadanie č. 6
  5. %%Matlab: R2016b
  6.  
  7. %%Vypocet kruznicovej trilateracie s 3 bunkovymi stanicami
  8. %%Mobilny terminal umiestneny v strede trojuholnika - pokryty vsetkymi bunkovymi stanicami (rádiomajákmi)
  9. %%Vypocet trilateracie s pridanim chybovosti 5%, 10%, 20% z dovodu prechodu signalu prostredim bez LoS (Line of Sight)
  10.  
  11. %%Ocakavany vystup programu: https://i.imgur.com/nX5DbZN.png
  12. %%Clanok k projektu: http://deadawp.blog.sector.sk/blogclanok/13283/kruznicova-trilateracia-matlab.htm
  13.  
  14. close all; %% zatvor figure, okno
  15. clear all; %% Vymaž premenné a ich hodnoty
  16. rng shuffle %% náhodný generátor čísel, založený na čase
  17. velkost_pola=1000; %%veľkosť poľa, max x a y súradnica
  18. RADIOMAJAK1(1) = randi([0,velkost_pola]) %% x-ová súradnica pre rádiomaják 1
  19. RADIOMAJAK1(2) = randi([0,velkost_pola]) %% y-ová súradnica pre rádiomaják 1
  20. RADIOMAJAK2(1) = randi([0,velkost_pola]) %% x-ová súradnica pre rádiomaják 2
  21. RADIOMAJAK2(2) = randi([0,velkost_pola]) %% y-ová súradnica pre rádiomaják 2
  22. rozdiel12x = abs(RADIOMAJAK1(1)-RADIOMAJAK2(1)) %%rozdiel x-ových súradníc rádiomajákov 1 a 2
  23. rozdiel12y = abs(RADIOMAJAK1(2)-RADIOMAJAK2(2)) %%rozdiel y-ových súradníc rádiomajákov 1 a 2
  24.  
  25. %%vzdialenosť medzi rádiomajákom 1 a 2 v metroch, vyjadrenie cez Pytagorovu
  26. %%vetu v pravouhlom súradnícovom systéme
  27. vzdialenost12 = round(sqrt((rozdiel12x^2)+(rozdiel12y^2)),2)
  28.  
  29. %%pokým je vzdialenosť menšia ako 400 metrov, opakuj generovanie súradníc,
  30. %%výpočet vzdialenosti, porovnaj
  31. while (vzdialenost12 < 400 || vzdialenost12 > 1000 )
  32. RADIOMAJAK2(1) = randi([0,velkost_pola])
  33. RADIOMAJAK2(2) = randi([0,velkost_pola])
  34. rozdiel12x = abs(RADIOMAJAK1(1)-RADIOMAJAK2(1))
  35. rozdiel12y = abs(RADIOMAJAK1(2)-RADIOMAJAK2(2))
  36. vzdialenost12 = round(sqrt((rozdiel12x^2)+(rozdiel12y^2)),2)
  37. end
  38. RADIOMAJAK3(1) = randi([0,velkost_pola]) %% x-ová súradnica pre rádiomaják 3
  39. RADIOMAJAK3(2) = randi([0,velkost_pola]) %% y-ová súradnica pre rádiomaják 1
  40.  
  41. %%rozdiel súradníc rádiomajáku 3 od rádiomajákov 1 a 2
  42. rozdiel13x = abs(RADIOMAJAK1(1)-RADIOMAJAK3(1))
  43. rozdiel13y = abs(RADIOMAJAK1(2)-RADIOMAJAK3(2))
  44. vzdialenost13 = round(sqrt((rozdiel13x^2)+(rozdiel13y^2)),2)
  45. rozdiel23x = abs(RADIOMAJAK2(1)-RADIOMAJAK3(1))
  46. rozdiel23y = abs(RADIOMAJAK2(2)-RADIOMAJAK3(2))
  47. vzdialenost23 = round(sqrt((rozdiel23x^2)+(rozdiel23y^2)),2)
  48. %%obdobný cyklus pre porovnanie vzdialenosti s už existujúcimi rádiomajákmi
  49. %%ak je vzdialenosť k jednému, alebo obom rádiomajákom menej ako 400m,
  50. %%opakuj cyklus, generovanie, prepočet vzdialenosti
  51. while (vzdialenost13 < 400 || vzdialenost23 < 400 || vzdialenost23 > 1000 || vzdialenost13 > 1000)
  52. RADIOMAJAK3(1) = randi([0,velkost_pola])
  53. RADIOMAJAK3(2) = randi([0,velkost_pola])
  54. rozdiel13x = abs(RADIOMAJAK1(1)-RADIOMAJAK3(1))
  55. rozdiel13y = abs(RADIOMAJAK1(2)-RADIOMAJAK3(2))
  56. vzdialenost13 = round(sqrt((rozdiel13x^2)+(rozdiel13y^2)),2)
  57. rozdiel23x = abs(RADIOMAJAK2(1)-RADIOMAJAK3(1))
  58. rozdiel23y = abs(RADIOMAJAK2(2)-RADIOMAJAK3(2))
  59. vzdialenost23 = round(sqrt((rozdiel23x^2)+(rozdiel23y^2)),2)
  60. end
  61. %%vykreslenie rádiomajáku č. 1 na os x a y, znázornenie krúžkom červenej
  62. %%farby
  63. scatter(RADIOMAJAK1(1),RADIOMAJAK1(2),'x','r')
  64. SURADNICE_MAJAK1x = num2str(RADIOMAJAK1(1));
  65. SURADNICE_MAJAK1y = num2str(RADIOMAJAK1(2));
  66. %%vypis textu so suradnicami na x+10 a y+15 poziciu, velkosť písma 10
  67. text(RADIOMAJAK1(1)+10, RADIOMAJAK1(2)+15,['[',SURADNICE_MAJAK1x,' ; ',SURADNICE_MAJAK1y,']'], 'Fontsize', 10);
  68. hold on %%počkaj
  69. %%obdobne pre rádiomaják č.2
  70. scatter(RADIOMAJAK2(1),RADIOMAJAK2(2),'x','b')
  71. SURADNICE_MAJAK2x = num2str(RADIOMAJAK2(1));
  72. SURADNICE_MAJAK2y = num2str(RADIOMAJAK2(2));
  73. text(RADIOMAJAK2(1)+10, RADIOMAJAK2(2)+15,['[',SURADNICE_MAJAK2x,' ; ',SURADNICE_MAJAK2y,']'], 'Fontsize', 10);
  74. hold on
  75. %%obdobne pre rádiomaják č.3
  76. scatter(RADIOMAJAK3(1),RADIOMAJAK3(2),'x','g')
  77. SURADNICE_MAJAK3x = num2str(RADIOMAJAK3(1));
  78. SURADNICE_MAJAK3y = num2str(RADIOMAJAK3(2));
  79. text(RADIOMAJAK3(1)+10, RADIOMAJAK3(2)+15,['[',SURADNICE_MAJAK3x,' ; ',SURADNICE_MAJAK3y,']'], 'Fontsize', 10);
  80. usecka12 = [RADIOMAJAK1(1),RADIOMAJAK2(1)] %%x suradnice priamky
  81. usecka21 = [RADIOMAJAK1(2),RADIOMAJAK2(2)] %%y suradnice priamky
  82. usecka13 = [RADIOMAJAK1(1),RADIOMAJAK3(1)]
  83. usecka31 = [RADIOMAJAK1(2),RADIOMAJAK3(2)]
  84. usecka23 = [RADIOMAJAK2(1),RADIOMAJAK3(1)]
  85. usecka32 = [RADIOMAJAK2(2),RADIOMAJAK3(2)]
  86.  
  87. %%taznica na stred protilahlej usecky, sluzi na vykreslenie 4. bodu
  88. taznica = [RADIOMAJAK1(1),(RADIOMAJAK2(1)+RADIOMAJAK3(1))/2]
  89. taznicab = [RADIOMAJAK1(2),(RADIOMAJAK2(2)+RADIOMAJAK3(2))/2]
  90.  
  91. %%PYTAGOROVA VETA --> vzdialenost
  92. xobjekt = taznica(1)-taznica(2); %%rozdiel x suradnic
  93. yobjekt = taznicab(1)-taznicab(2); %%rozdiel y suradnic
  94. x_suradnica = xobjekt/3+taznica(2);
  95. y_suradnica = yobjekt/3+taznicab(2);
  96. scatter(x_suradnica,y_suradnica,'*','m'); %%vykresli bod
  97.  
  98. %%vykreslenie useciek cervenej ciarkovanej farby, od bodu k vrcholom
  99. plot([RADIOMAJAK1(1), x_suradnica],[RADIOMAJAK1(2),y_suradnica],'--r');
  100. plot([RADIOMAJAK2(1), x_suradnica],[RADIOMAJAK2(2),y_suradnica],'--r');
  101. plot([RADIOMAJAK3(1), x_suradnica],[RADIOMAJAK3(2),y_suradnica],'--r');
  102.  
  103. %%vypocet vzdialenosti medzi 4. bodom a 1. vrcholom
  104. rozdiel1_bod_x = abs(RADIOMAJAK1(1)-x_suradnica)
  105. rozdiel1_bod_y = abs(RADIOMAJAK1(2)-y_suradnica)
  106. vzdialenost1_bod = round(sqrt((rozdiel1_bod_x^2)+(rozdiel1_bod_y^2)),2)
  107. meter1_bod = ['(',num2str(vzdialenost1_bod),')'];
  108.  
  109. %%vypocet vzdialenosti medzi 4. bodom a 2. vrcholom
  110. rozdiel2_bod_x = abs(RADIOMAJAK2(1)-x_suradnica)
  111. rozdiel2_bod_y = abs(RADIOMAJAK2(2)-y_suradnica)
  112. vzdialenost2_bod = round(sqrt((rozdiel2_bod_x^2)+(rozdiel2_bod_y^2)),2)
  113. meter2_bod = ['(',num2str(vzdialenost2_bod),')'];
  114.  
  115. %%vypocet vzdialenosti medzi 4. bodom a 3. vrcholom
  116. rozdiel3_bod_x = abs(RADIOMAJAK3(1)-x_suradnica)
  117. rozdiel3_bod_y = abs(RADIOMAJAK3(2)-y_suradnica)
  118. vzdialenost3_bod = round(sqrt((rozdiel3_bod_x^2)+(rozdiel3_bod_y^2)),2)
  119. meter3_bod = ['(',num2str(vzdialenost3_bod),')'];
  120.  
  121. %%vypis vzdialenosti medzi 4. bodom a vrcholmi trojuholnika
  122. text((RADIOMAJAK1(1)+x_suradnica)/2,(RADIOMAJAK1(2)+y_suradnica)/2,meter1_bod,'Color','red', 'Fontsize', 10);
  123. text((RADIOMAJAK2(1)+x_suradnica)/2,(RADIOMAJAK2(2)+y_suradnica)/2,meter2_bod,'Color','red', 'Fontsize', 10);
  124. text((RADIOMAJAK3(1)+x_suradnica)/2,(RADIOMAJAK3(2)+y_suradnica)/2,meter3_bod,'Color','red', 'Fontsize', 10);
  125.  
  126. %%vykreslenie ciernych ciarkovanych ciar medzi vrcholmi
  127. plot(usecka12,usecka21,'--k');
  128. plot(usecka13,usecka31,'--k');
  129. plot(usecka23,usecka32,'--k');
  130.  
  131. %%prevedenie cisla na text a format so zatvorkami pre vypis
  132. meter12 = ['(',num2str(vzdialenost12),')'];
  133. meter13 = ['(',num2str(vzdialenost13),')'];
  134. meter23 = ['(',num2str(vzdialenost23),')'];
  135.  
  136. %%vykreslenie vzdialenosti jednotlivych vrcholov (zakladnovych stanic)
  137. text((RADIOMAJAK1(1)+RADIOMAJAK2(1))/2,(RADIOMAJAK1(2)+RADIOMAJAK2(2))/2,meter12, 'Fontsize', 10);
  138. text((RADIOMAJAK1(1)+RADIOMAJAK3(1))/2,(RADIOMAJAK1(2)+RADIOMAJAK3(2))/2,meter13, 'Fontsize', 10);
  139. text((RADIOMAJAK2(1)+RADIOMAJAK3(1))/2,(RADIOMAJAK2(2)+RADIOMAJAK3(2))/2,meter23, 'Fontsize', 10);
  140.  
  141. %% chyba merania 5%
  142. R1 = 1.05*(str2num(meter1_bod))
  143. R2 = 1.05*(str2num(meter2_bod))
  144. R3 = 1.05*(str2num(meter3_bod))
  145. %% chyba merania 10%
  146. R4 = 1.10*(str2num(meter1_bod))
  147. R5 = 1.10*(str2num(meter2_bod))
  148. R6 = 1.10*(str2num(meter3_bod))
  149. %% chyba merania 20%
  150. R7 = 1.20*(str2num(meter1_bod))
  151. R8 = 1.20*(str2num(meter2_bod))
  152. R9 = 1.20*(str2num(meter3_bod))
  153.  
  154. %% vypocet a vykreslenie kruznice vsetkych radiomajakov pre 5% chybu
  155. priamka1 = 0:0.001:2*pi;
  156. kruh1x = R1 * cos(priamka1) + RADIOMAJAK1(1);
  157. kruh1y = R1 * sin(priamka1) + RADIOMAJAK1(2);
  158. kruh1 = plot(kruh1x, kruh1y,'-r');
  159. priamka2 = 0:0.001:2*pi;
  160. kruh2x = R2 * cos(priamka2) + RADIOMAJAK2(1);
  161. kruh2y = R2 * sin(priamka2) + RADIOMAJAK2(2);
  162. kruh2 = plot(kruh2x, kruh2y,'-r');
  163. priamka3 = 0:0.001:2*pi;
  164. kruh3x = R3 * cos(priamka3) + RADIOMAJAK3(1);
  165. kruh3y = R3 * sin(priamka3) + RADIOMAJAK3(2);
  166. kruh3 = plot(kruh3x, kruh3y,'-r');
  167.  
  168. %% vypocet a vykreslenie kruznice vsetkych radiomajakov pre 10% chybu
  169. priamka4 = 0:0.001:2*pi;
  170. kruh4x = R4 * cos(priamka4) + RADIOMAJAK1(1);
  171. kruh4y = R4 * sin(priamka4) + RADIOMAJAK1(2);
  172. kruh4 = plot(kruh4x, kruh4y,'-b');
  173. priamka5 = 0:0.001:2*pi;
  174. kruh5x = R5 * cos(priamka5) + RADIOMAJAK2(1);
  175. kruh5y = R5 * sin(priamka5) + RADIOMAJAK2(2);
  176. kruh5 = plot(kruh5x, kruh5y,'-b');
  177. priamka6 = 0:0.001:2*pi;
  178. kruh6x = R6 * cos(priamka6) + RADIOMAJAK3(1);
  179. kruh6y = R6 * sin(priamka6) + RADIOMAJAK3(2);
  180. kruh6 = plot(kruh6x, kruh6y,'-b');
  181.  
  182. %% vypocet a vykreslenie kruznice vsetkych radiomajakov pre 20% chybu
  183. priamka7 = 0:0.001:2*pi;
  184. kruh7x = R7 * cos(priamka7) + RADIOMAJAK1(1);
  185. kruh7y = R7 * sin(priamka7) + RADIOMAJAK1(2);
  186. kruh7 = plot(kruh7x, kruh7y,'-g');
  187. priamka8 = 0:0.001:2*pi;
  188. kruh8x = R8 * cos(priamka8) + RADIOMAJAK2(1);
  189. kruh8y = R8 * sin(priamka8) + RADIOMAJAK2(2);
  190. kruh8 = plot(kruh8x, kruh8y,'-g');
  191. priamka9 = 0:0.001:2*pi;
  192. kruh9x = R9 * cos(priamka9) + RADIOMAJAK3(1);
  193. kruh9y = R9 * sin(priamka9) + RADIOMAJAK3(2);
  194. kruh9 = plot(kruh9x, kruh9y,'-g');
  195.  
  196. %%BOD 1 a 2
  197. F=@(BOD1) ([(BOD1(1)-RADIOMAJAK1(1))^2+(BOD1(2)-RADIOMAJAK1(2))^2-R1^2; ...
  198. (BOD1(1)-RADIOMAJAK2(1))^2+(BOD1(2)-RADIOMAJAK2(2))^2-R2^2]);
  199. opt=optimoptions(@fsolve);
  200. opt.Algorithm='levenberg-marquardt';
  201. opt.Display='off';
  202. BOD1=fsolve(F,[RADIOMAJAK1(1),RADIOMAJAK1(1)+R1],opt);
  203. %%scatter(BOD1(1),BOD1(2),'*','m')
  204. BOD2=fsolve(F,[RADIOMAJAK1(1),RADIOMAJAK1(1)-R1],opt);
  205. %%scatter(BOD2(1),BOD2(2),'*','m')
  206. %%BOD 2 a 3
  207. F3=@(BOD3) ([(BOD3(1)-RADIOMAJAK2(1))^2+(BOD3(2)-RADIOMAJAK2(2))^2-R2^2; ...
  208. (BOD3(1)-RADIOMAJAK3(1))^2+(BOD3(2)-RADIOMAJAK3(2))^2-R3^2]);
  209. opt2=optimoptions(@fsolve);
  210. opt2.Algorithm='levenberg-marquardt';
  211. opt2.Display='off';
  212. BOD3=fsolve(F3,[RADIOMAJAK2(1),RADIOMAJAK2(1)+R2],opt2);
  213. %%scatter(BOD3(1),BOD3(2),'*','m')
  214. BOD4=fsolve(F3,[RADIOMAJAK2(1),RADIOMAJAK2(1)-R2],opt2);
  215. %%scatter(BOD4(1),BOD4(2),'*','m')
  216. %%BOD 1 a 3
  217. F5=@(BOD5) ([(BOD5(1)-RADIOMAJAK3(1))^2+(BOD5(2)-RADIOMAJAK3(2))^2-R3^2; ...
  218. (BOD5(1)-RADIOMAJAK1(1))^2+(BOD5(2)-RADIOMAJAK1(2))^2-R1^2]);
  219. opt3=optimoptions(@fsolve);
  220. opt3.Algorithm='levenberg-marquardt';
  221. opt3.Display='off';
  222. BOD5=fsolve(F5,[RADIOMAJAK3(1),RADIOMAJAK3(1)+R3],opt3);
  223. %%scatter(BOD5(1),BOD5(2),'*','m')
  224. BOD6=fsolve(F5,[RADIOMAJAK3(1),RADIOMAJAK3(1)-R3],opt3);
  225. %%scatter(BOD6(1),BOD6(2),'*','m')
  226. %BOD 1 a 2 10%
  227. F10=@(BOD10) ([(BOD10(1)-RADIOMAJAK1(1))^2+(BOD10(2)-RADIOMAJAK1(2))^2-R4^2; ...
  228. (BOD10(1)-RADIOMAJAK2(1))^2+(BOD10(2)-RADIOMAJAK2(2))^2-R5^2]);
  229. opt10=optimoptions(@fsolve);
  230. opt10.Algorithm='levenberg-marquardt';
  231. opt10.Display='off';
  232. BOD10=fsolve(F,[RADIOMAJAK1(1),RADIOMAJAK1(1)+R4],opt10);
  233. %%scatter(BOD10(1),BOD10(2),'*','b')
  234. BOD11=fsolve(F,[RADIOMAJAK1(1),RADIOMAJAK1(1)-R4],opt10);
  235. %%scatter(BOD11(1),BOD11(2),'*','b')
  236. %BOD 2 a 3 10%
  237. F13=@(BOD13) ([(BOD13(1)-RADIOMAJAK2(1))^2+(BOD13(2)-RADIOMAJAK2(2))^2-R5^2; ...
  238. (BOD13(1)-RADIOMAJAK3(1))^2+(BOD13(2)-RADIOMAJAK3(2))^2-R6^2]);
  239. opt13=optimoptions(@fsolve);
  240. opt13.Algorithm='levenberg-marquardt';
  241. opt13.Display='off';
  242. BOD13=fsolve(F13,[RADIOMAJAK2(1),RADIOMAJAK2(1)+R5],opt13);
  243. %%scatter(BOD13(1),BOD13(2),'*','b')
  244. BOD14=fsolve(F13,[RADIOMAJAK2(1),RADIOMAJAK2(1)-R5],opt13);
  245. %%scatter(BOD14(1),BOD14(2),'*','b')
  246. %BOD 3 a 1 10%
  247. F15=@(BOD15) ([(BOD15(1)-RADIOMAJAK3(1))^2+(BOD15(2)-RADIOMAJAK3(2))^2-R6^2; ...
  248. (BOD15(1)-RADIOMAJAK1(1))^2+(BOD15(2)-RADIOMAJAK1(2))^2-R4^2]);
  249. opt15=optimoptions(@fsolve);
  250. opt15.Algorithm='levenberg-marquardt';
  251. opt15.Display='off';
  252. BOD15=fsolve(F15,[RADIOMAJAK3(1),RADIOMAJAK3(1)+R6],opt15);
  253. %%scatter(BOD15(1),BOD15(2),'*','b')
  254. BOD16=fsolve(F15,[RADIOMAJAK3(1),RADIOMAJAK3(1)-R6],opt15);
  255. %%scatter(BOD16(1),BOD16(2),'*','b')
  256. %%%%%%%%
  257. %BOD 1 a 2 20%
  258. F20=@(BOD20) ([(BOD20(1)-RADIOMAJAK1(1))^2+(BOD20(2)-RADIOMAJAK1(2))^2-R7^2; ...
  259. (BOD20(1)-RADIOMAJAK2(1))^2+(BOD20(2)-RADIOMAJAK2(2))^2-R8^2]);
  260. opt20=optimoptions(@fsolve);
  261. opt20.Algorithm='levenberg-marquardt';
  262. opt20.Display='off';
  263. BOD20=fsolve(F,[RADIOMAJAK1(1),RADIOMAJAK1(1)+R7],opt20);
  264. %%scatter(BOD20(1),BOD20(2),'*','g')
  265. BOD21=fsolve(F,[RADIOMAJAK1(1),RADIOMAJAK1(1)-R7],opt20);
  266. %%scatter(BOD21(1),BOD21(2),'*','g')
  267. %BOD 2 a 3 20%
  268. F23=@(BOD23) ([(BOD23(1)-RADIOMAJAK2(1))^2+(BOD23(2)-RADIOMAJAK2(2))^2-R8^2; ...
  269. (BOD23(1)-RADIOMAJAK3(1))^2+(BOD23(2)-RADIOMAJAK3(2))^2-R9^2]);
  270. opt23=optimoptions(@fsolve);
  271. opt23.Algorithm='levenberg-marquardt';
  272. opt23.Display='off';
  273. BOD23=fsolve(F23,[RADIOMAJAK2(1),RADIOMAJAK2(1)+R8],opt23);
  274. %%scatter(BOD23(1),BOD23(2),'*','g')
  275. BOD24=fsolve(F23,[RADIOMAJAK2(1),RADIOMAJAK2(1)-R8],opt23);
  276. %%scatter(BOD24(1),BOD24(2),'*','g')
  277. %BOD 3 a 1 20%
  278. F25=@(BOD15) ([(BOD15(1)-RADIOMAJAK3(1))^2+(BOD15(2)-RADIOMAJAK3(2))^2-R9^2; ...
  279. (BOD15(1)-RADIOMAJAK1(1))^2+(BOD15(2)-RADIOMAJAK1(2))^2-R7^2]);
  280. opt25=optimoptions(@fsolve);
  281. opt25.Algorithm='levenberg-marquardt';
  282. opt25.Display='off';
  283. BOD25=fsolve(F25,[RADIOMAJAK3(1),RADIOMAJAK3(1)+R9],opt25);
  284. %%scatter(BOD25(1),BOD25(2),'*','g')
  285. BOD26=fsolve(F25,[RADIOMAJAK3(1),RADIOMAJAK3(1)-R9],opt25);
  286. %%scatter(BOD26(1),BOD26(2),'*','g')
  287. %%%%%%%%%%%%%%%%%%%%%%%%
  288. rozdielbod1x_20 = abs(BOD20(1)-x_suradnica)
  289. rozdielbod1y_20 = abs(BOD20(2)-y_suradnica)
  290. BOD1_vzdialenost_20 = round(sqrt((rozdielbod1x_20^2)+(rozdielbod1y_20^2)),2)
  291. rozdielbod2x_20 = abs(BOD21(1)-x_suradnica)
  292. rozdielbod2y_20 = abs(BOD21(2)-y_suradnica)
  293. BOD2_vzdialenost_20 = round(sqrt((rozdielbod2x_20^2)+(rozdielbod2y_20^2)),2)
  294. if(BOD1_vzdialenost_20<BOD2_vzdialenost_20)
  295. BOD12_20 = BOD1_vzdialenost_20
  296. BOD1_REAL_20 = BOD20
  297. elseif (BOD2_vzdialenost_20<=BOD1_vzdialenost_20)
  298. BOD12_20 = BOD2_vzdialenost_20
  299. BOD1_REAL_20 = BOD21
  300. end
  301. rozdielbod3x_20 = abs(BOD23(1)-x_suradnica)
  302. rozdielbod3y_20 = abs(BOD23(2)-y_suradnica)
  303. BOD3_vzdialenost_20 = round(sqrt((rozdielbod3x_20^2)+(rozdielbod3y_20^2)),2)
  304. rozdielbod4x_20 = abs(BOD24(1)-x_suradnica)
  305. rozdielbod4y_20 = abs(BOD24(2)-y_suradnica)
  306. BOD4_vzdialenost_20 = round(sqrt((rozdielbod4x_20^2)+(rozdielbod4y_20^2)),2)
  307. if(BOD3_vzdialenost_20<BOD4_vzdialenost_20)
  308. BOD23_20 = BOD3_vzdialenost_20
  309. BOD2_REAL_20 = BOD23
  310. elseif (BOD4_vzdialenost_20<=BOD3_vzdialenost_20)
  311. BOD23_20 = BOD4_vzdialenost_20
  312. BOD2_REAL_20 = BOD24
  313. end
  314. rozdielbod5x_20 = abs(BOD25(1)-x_suradnica)
  315. rozdielbod5y_20 = abs(BOD25(2)-y_suradnica)
  316. BOD5_vzdialenost_20 = round(sqrt((rozdielbod5x_20^2)+(rozdielbod5y_20^2)),2)
  317. rozdielbod6x_20 = abs(BOD26(1)-x_suradnica)
  318. rozdielbod6y_20 = abs(BOD26(2)-y_suradnica)
  319. BOD6_vzdialenost_20 = round(sqrt((rozdielbod6x_20^2)+(rozdielbod6y_20^2)),2)
  320. if(BOD6_vzdialenost_20<BOD5_vzdialenost_20)
  321. BOD31_20 = BOD6_vzdialenost_20
  322. BOD3_REAL_20 = BOD26
  323. elseif (BOD5_vzdialenost_20<=BOD6_vzdialenost_20)
  324. BOD31_20 = BOD5_vzdialenost_20
  325. BOD3_REAL_20 = BOD25
  326. end
  327. taznica_20 = [BOD1_REAL_20(1),(BOD2_REAL_20(1)+BOD3_REAL_20(1))/2]
  328. taznicab_20 = [BOD1_REAL_20(2),(BOD2_REAL_20(2)+BOD3_REAL_20(2))/2]
  329. xobjekt_20 = taznica_20(1)-taznica_20(2); %%rozdiel x suradnic
  330. yobjekt_20 = taznicab_20(1)-taznicab_20(2); %%rozdiel y suradnic
  331. x_suradnica_20 = xobjekt_20/3+taznica_20(2);
  332. y_suradnica_20 = yobjekt_20/3+taznicab_20(2);
  333. %%scatter(x_suradnica_20,y_suradnica_20,'*','k'); %%vykresli bod pre 10% (odh. poloha)
  334. %%%%%%%%%%%%%%%%%%%%%%%
  335. rozdielbod1x_10 = abs(BOD10(1)-x_suradnica)
  336. rozdielbod1y_10 = abs(BOD10(2)-y_suradnica)
  337. BOD1_vzdialenost_10 = round(sqrt((rozdielbod1x_10^2)+(rozdielbod1y_10^2)),2)
  338. rozdielbod2x_10 = abs(BOD11(1)-x_suradnica)
  339. rozdielbod2y_10 = abs(BOD11(2)-y_suradnica)
  340. BOD2_vzdialenost_10 = round(sqrt((rozdielbod2x_10^2)+(rozdielbod2y_10^2)),2)
  341. if(BOD1_vzdialenost_10<BOD2_vzdialenost_10)
  342. BOD12_10 = BOD1_vzdialenost_10
  343. BOD1_REAL_10 = BOD10
  344. elseif (BOD2_vzdialenost_10<=BOD1_vzdialenost_10)
  345. BOD12_10 = BOD2_vzdialenost_10
  346. BOD1_REAL_10 = BOD11
  347. end
  348. rozdielbod3x_10 = abs(BOD13(1)-x_suradnica)
  349. rozdielbod3y_10 = abs(BOD13(2)-y_suradnica)
  350. BOD3_vzdialenost_10 = round(sqrt((rozdielbod3x_10^2)+(rozdielbod3y_10^2)),2)
  351. rozdielbod4x_10 = abs(BOD14(1)-x_suradnica)
  352. rozdielbod4y_10 = abs(BOD14(2)-y_suradnica)
  353. BOD4_vzdialenost_10 = round(sqrt((rozdielbod4x_10^2)+(rozdielbod4y_10^2)),2)
  354. if(BOD3_vzdialenost_10<BOD4_vzdialenost_10)
  355. BOD23_10 = BOD3_vzdialenost_10
  356. BOD2_REAL_10 = BOD13
  357. elseif (BOD4_vzdialenost_10<=BOD3_vzdialenost_10)
  358. BOD23_10 = BOD4_vzdialenost_10
  359. BOD2_REAL_10 = BOD14
  360. end
  361. rozdielbod5x_10 = abs(BOD15(1)-x_suradnica)
  362. rozdielbod5y_10 = abs(BOD15(2)-y_suradnica)
  363. BOD5_vzdialenost_10 = round(sqrt((rozdielbod5x_10^2)+(rozdielbod5y_10^2)),2)
  364. rozdielbod6x_10 = abs(BOD16(1)-x_suradnica)
  365. rozdielbod6y_10 = abs(BOD16(2)-y_suradnica)
  366. BOD6_vzdialenost_10 = round(sqrt((rozdielbod6x_10^2)+(rozdielbod6y_10^2)),2)
  367. if(BOD6_vzdialenost_10<BOD5_vzdialenost_10)
  368. BOD31_10 = BOD6_vzdialenost_10
  369. BOD3_REAL_10 = BOD16
  370. elseif (BOD5_vzdialenost_10<=BOD6_vzdialenost_10)
  371. BOD31_10 = BOD5_vzdialenost_10
  372. BOD3_REAL_10 = BOD15
  373. end
  374. taznica_10 = [BOD1_REAL_10(1),(BOD2_REAL_10(1)+BOD3_REAL_10(1))/2]
  375. taznicab_10 = [BOD1_REAL_10(2),(BOD2_REAL_10(2)+BOD3_REAL_10(2))/2]
  376. xobjekt_10 = taznica_10(1)-taznica_10(2); %%rozdiel x suradnic
  377. yobjekt_10 = taznicab_10(1)-taznicab_10(2); %%rozdiel y suradnic
  378. x_suradnica_10 = xobjekt_10/3+taznica_10(2);
  379. y_suradnica_10 = yobjekt_10/3+taznicab_10(2);
  380. %%scatter(x_suradnica_10,y_suradnica_10,'*','k'); %%vykresli bod pre 10% (odh. poloha)
  381. %%%%%%%%%%%%%%%%%%%%%%%
  382. rozdielbod1x = abs(BOD1(1)-x_suradnica)
  383. rozdielbod1y = abs(BOD1(2)-y_suradnica)
  384. BOD1_vzdialenost = round(sqrt((rozdielbod1x^2)+(rozdielbod1y^2)),2)
  385. rozdielbod2x = abs(BOD2(1)-x_suradnica)
  386. rozdielbod2y = abs(BOD2(2)-y_suradnica)
  387. BOD2_vzdialenost = round(sqrt((rozdielbod2x^2)+(rozdielbod2y^2)),2)
  388. if(BOD1_vzdialenost<BOD2_vzdialenost)
  389. BOD12_5 = BOD1_vzdialenost
  390. BOD1_REAL = BOD1
  391. elseif (BOD2_vzdialenost<=BOD1_vzdialenost)
  392. BOD12_5 = BOD2_vzdialenost
  393. BOD1_REAL = BOD2
  394. end
  395. rozdielbod3x = abs(BOD3(1)-x_suradnica)
  396. rozdielbod3y = abs(BOD3(2)-y_suradnica)
  397. BOD3_vzdialenost = round(sqrt((rozdielbod3x^2)+(rozdielbod3y^2)),2)
  398. rozdielbod4x = abs(BOD4(1)-x_suradnica)
  399. rozdielbod4y = abs(BOD4(2)-y_suradnica)
  400. BOD4_vzdialenost = round(sqrt((rozdielbod4x^2)+(rozdielbod4y^2)),2)
  401. if(BOD3_vzdialenost<BOD4_vzdialenost)
  402. BOD23_5 = BOD3_vzdialenost
  403. BOD2_REAL = BOD3
  404. elseif (BOD4_vzdialenost<=BOD3_vzdialenost)
  405. BOD23_5 = BOD4_vzdialenost
  406. BOD2_REAL = BOD4
  407. end
  408. rozdielbod5x = abs(BOD5(1)-x_suradnica)
  409. rozdielbod5y = abs(BOD5(2)-y_suradnica)
  410. BOD5_vzdialenost = round(sqrt((rozdielbod5x^2)+(rozdielbod5y^2)),2)
  411. rozdielbod6x = abs(BOD6(1)-x_suradnica)
  412. rozdielbod6y = abs(BOD6(2)-y_suradnica)
  413. BOD6_vzdialenost = round(sqrt((rozdielbod6x^2)+(rozdielbod6y^2)),2)
  414. if(BOD6_vzdialenost<BOD5_vzdialenost)
  415. BOD31_5 = BOD6_vzdialenost
  416. BOD3_REAL = BOD6
  417. elseif (BOD5_vzdialenost<=BOD6_vzdialenost)
  418. BOD31_5 = BOD5_vzdialenost
  419. BOD3_REAL = BOD5
  420. end
  421. taznica_5 = [BOD1_REAL(1),(BOD2_REAL(1)+BOD3_REAL(1))/2]
  422. taznicab_5 = [BOD1_REAL(2),(BOD2_REAL(2)+BOD3_REAL(2))/2]
  423. xobjekt_5 = taznica_5(1)-taznica_5(2); %%rozdiel x suradnic
  424. yobjekt_5 = taznicab_5(1)-taznicab_5(2); %%rozdiel y suradnic
  425. x_suradnica_5 = xobjekt_5/3+taznica_5(2);
  426. y_suradnica_5 = yobjekt_5/3+taznicab_5(2);
  427. scatter(x_suradnica_5,y_suradnica_5,'*','r');
  428. scatter(x_suradnica_10,y_suradnica_10,'*','b');
  429. scatter(x_suradnica_20,y_suradnica_20,'*','g');
  430. %%scatter(x_suradnica_5,y_suradnica_5,'*','g'); %%vykresli bod pre 5% (odh. poloha)
  431. title('1000x1000 metrov'); %%Nadpis grafu
  432. xlabel('m'); %Popis osi x
  433. ylabel('m'); %Popis osi y
  434. %dĺžka osí x a y, 0-1000, pravouhlý systém so začiatkom v ľavom dolnom rohu
  435. axis([0 velkost_pola 0 velkost_pola])
  436. %Textový popis autora, skupiny
  437. bod_pre_5 = ['[',num2str(x_suradnica_5),',',num2str(y_suradnica_5),']'];
  438. bod_pre_10 = ['[',num2str(x_suradnica_10),',',num2str(y_suradnica_10),']'];
  439. bod_pre_20 = ['[',num2str(x_suradnica_20),',',num2str(y_suradnica_20),']'];
  440. rozdiel_5x = abs(x_suradnica-x_suradnica_5)
  441. rozdiel_5y = abs(y_suradnica-y_suradnica_5)
  442. rozdiel_10x = abs(x_suradnica-x_suradnica_10)
  443. rozdiel_10y = abs(y_suradnica-y_suradnica_10)
  444. rozdiel_20x = abs(x_suradnica-x_suradnica_20)
  445. rozdiel_20y = abs(y_suradnica-y_suradnica_20)
  446. VZDIALENOST_5 = round(sqrt((rozdiel_5x^2)+(rozdiel_5y^2)),2)
  447. VZDIALENOST_10 = round(sqrt((rozdiel_10x^2)+(rozdiel_10y^2)),2)
  448. VZDIALENOST_20 = round(sqrt((rozdiel_20x^2)+(rozdiel_20y^2)),2)
  449. uit = uitable();
  450. uit.ColumnName = {'Chyba','Nepresnosť (m)'};
  451. d = {'5%',VZDIALENOST_5;'10%',VZDIALENOST_10;'20%',VZDIALENOST_20;};
  452. uit.Data = d;
  453. uit.Position = [20 20 258 78];
  454. %%vykreslenie vzdialenosti jednotlivych vrcholov (zakladnovych stanic)
  455. %%text((RADIOMAJAK1(1)+RADIOMAJAK2(1))/2,(RADIOMAJAK1(2)+RADIOMAJAK2(2))/2,meter12, 'Fontsize', 10);
  456. legend(['5% - ',bod_pre_5],['10% - ',bod_pre_10],['20% - ',bod_pre_20])
  457. text(0, 1030,'Pondelok: 7:30, Martin Chlebovec (LBMS)', 'Fontsize', 15);
  458. grid on %%vykreslenie hlavných súradnícových čiar (hodnota každých 100 metrov)
  459. grid minor %%vykreslenie sekundárnych čiarkovaných súradnícových čiar, každých 20 metrov
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement