Skip to main content
. 2022 May 3;22(9):3475. doi: 10.3390/s22093475
Algorithm 2 Changing satellite for VDOP improvement (n = 6)
1: void function changing satellite(azimuth_satellites, elevation_satellites)
2:  nz = 3;
3:  nu = 3;
4:  sat_me = find satellite of minimum elevation(elevation_satellites);
5:  sat_zenith = select satellite of high elevation(nz, azimuth_satellites);
6:  vec_s = generate vector of satellites(azimuth_satellites, elevation_satellites);
7:  vec_rp = generate vector of regular polygon(nu, sat_me);
8:  sat_uniform = select satellite of nearest regular polygon vector(vec_s, vec_rp);
9:  sat_selec = merge zenith and uniform satellites(sat_zenith, sat_uniform);
10:   case_selec = check case of selected satellite(sat_selec);
11:   if case_selec == 4
12:    sat_case8 = change satellite from case 4 to case 8;
13:    sat_case3 = change satellite from case 4 to case 3;
14:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case8, sat_case3);
15:   end
16:   if case_selec == 8
17:    sat_case7 = change satellite from case 8 to case 7;
18:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case7);
19:   end
20:   if case_selec == 3
21:    sat_case7 = change satellite from case 3 to case 7;
22:    sat_case2 = change satellite from case 3 to case 2;
23:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case7, sat_case2);
24:   end
25:   if case_selec == 5
26:    sat_case6 = change satellite from case 5 to case 6;
27:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case6);
28:   end
29:   if case_selec == 7
30:    sat_case6 = change satellite from case 7 to case 6;
31:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case6);
32:   end
33:   if case_selec == 2
34:    sat_case6 = change satellite from case 2 to case 6;
35:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case6);
36:   end
37:   if case_selec == 6
38:    sat_case1 = change satellite from case 6 to case 1;
39:    [case_selec, sat_selec] = compare case(case_selec, sat_selec, sat_case1);
40:   end
41:   return sat_selec, case_selec
42:  end function changing satellite
43:
44:  void function compare case(case_selec, sat_selec, sat_caseA, sat_caseB, …)
45:   flag_case = compare minimum VDOP(sat_selec, sat_caseA, sat_caseB, …);
46:   switch flag_case
47:    case case_selec
48:     return sat_selec, case_selec
49:    case A
50:     sat_selec = sat_caseA;
51:     case_selec = A;
52:     return sat_selec, case_selec
53:    case B
54:     …
55:   end
56:  end function case selection