Helios++
Helios software for LiDAR simulations
Test.h
1 #include <iostream>
2 #include <vector>
3 #include <random>
4 
5 #include "MarquardtFitter.h"
6 
7 using namespace std;
8 
9 class Test {
10 
11 public:
12  void testRandom() {
13 
14  //std::srand(std::time(0));
15 
16  std::random_device rd; //Will be used to obtain a seed for the random number engine
17  std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
18  std::uniform_real_distribution<> dis(0.0, 1.0);
19 
20  for (int i = 0; i < 100; i++) {
21  //cout << std::rand() / RAND_MAX << endl;
22  //cout << std::rand() << endl;
23  cout << dis(gen) << endl;
24  }
25  }
26 
27  void run() {
28  std::vector<double> fullwave(200, 0.0); //TODO try std::array
29  fullwave[71] = 0.0;
30  fullwave[72] = 304.6258290320149;
31  fullwave[73] = 1136.1249614927067;
32  fullwave[74] = 2383.4607586575366;
33  fullwave[75] = 3950.7983668633424;
34  fullwave[76] = 5755.781220246707;
35  fullwave[77] = 7727.982967423797;
36  fullwave[78] = 9807.518177751515;
37  fullwave[79] = 11943.796685780588;
38  fullwave[80] = 14094.407804669252;
39  fullwave[81] = 16224.12189173799;
40  fullwave[82] = 18303.997892161336;
41  fullwave[83] = 20310.58652932293;
42  fullwave[84] = 22225.219761141412;
43  fullwave[85] = 24033.377988536104;
44  fullwave[86] = 25724.12729231791;
45  fullwave[87] = 27289.619694741228;
46  fullwave[88] = 28724.650097763853;
47  fullwave[89] = 30026.26414725786;
48  fullwave[90] = 31193.411816054955;
49  fullwave[91] = 32226.641993430272;
50  fullwave[92] = 33127.83381867297;
51  fullwave[93] = 33899.96090564749;
52  fullwave[94] = 34546.88497727351;
53  fullwave[95] = 35073.17576690247;
54  fullwave[96] = 35483.95435062383;
55  fullwave[97] = 35784.757353321904;
56  fullwave[98] = 35981.419724318;
57  fullwave[99] = 36079.97400795409;
58  fullwave[100] = 36086.56424258883;
59  fullwave[101] = 36007.37281009028;
60  fullwave[102] = 35848.55872876636;
61  fullwave[103] = 35616.20603736408;
62  fullwave[104] = 35316.28105774768;
63  fullwave[105] = 34954.59745046197;
64  fullwave[106] = 34536.78809181308;
65  fullwave[107] = 34068.28290446155;
66  fullwave[108] = 33554.291866833046;
67  fullwave[109] = 32999.79251083113;
68  fullwave[110] = 32409.521293225163;
69  fullwave[111] = 31787.968294451945;
70  fullwave[112] = 31139.37476010957;
71  fullwave[113] = 30467.733055774166;
72  fullwave[114] = 29776.78865551364;
73  fullwave[115] = 29070.04382913681;
74  fullwave[116] = 28350.76273328072;
75  fullwave[117] = 27621.97764734261;
76  fullwave[118] = 26886.496127403192;
77  fullwave[119] = 26146.90888002677;
78  fullwave[120] = 25405.598183491144;
79  fullwave[121] = 24664.746706893926;
80  fullwave[122] = 23926.34659797524;
81  fullwave[123] = 23192.208728634778;
82  fullwave[124] = 22463.97200322889;
83  fullwave[125] = 21743.112649013565;
84  fullwave[126] = 21030.953420735183;
85  fullwave[127] = 20328.67266253104;
86  fullwave[128] = 19637.313180135883;
87  fullwave[129] = 18957.790885035913;
88  fullwave[130] = 18290.90317979298;
89  fullwave[131] = 17637.337060388763;
90  fullwave[132] = 16997.676917215533;
91  fullwave[133] = 16372.412021354836;
92  fullwave[134] = 15761.94368712403;
93  fullwave[135] = 15166.592105604374;
94  fullwave[136] = 14586.602847062239;
95  fullwave[137] = 14022.153032896964;
96  fullwave[138] = 13473.35718004877;
97  fullwave[139] = 12940.27272272731;
98  fullwave[140] = 12422.90521791965;
99  fullwave[141] = 11921.213242445208;
100  fullwave[142] = 11435.112990379346;
101  fullwave[143] = 10964.482580499178;
102  fullwave[144] = 10509.166084042365;
103  fullwave[145] = 10068.977283538303;
104  fullwave[146] = 9643.703173792512;
105  fullwave[147] = 9233.107216300932;
106  fullwave[148] = 8836.932358457492;
107  fullwave[149] = 8454.903828912795;
108  fullwave[150] = 8086.731720357846;
109  fullwave[151] = 7732.113370856265;
110  fullwave[152] = 7390.735554643773;
111  fullwave[153] = 7062.276493063163;
112  fullwave[154] = 6746.407696015988;
113  fullwave[155] = 6442.795643996111;
114  fullwave[156] = 6151.103320431239;
115  fullwave[157] = 5870.991603703011;
116  fullwave[158] = 5602.120527848272;
117  fullwave[159] = 5344.15042056905;
118  fullwave[160] = 5096.742926799163;
119  fullwave[161] = 4859.5619256956015;
120  fullwave[162] = 4632.274348544305;
121  fullwave[163] = 4414.550904696215;
122  fullwave[164] = 4206.066722281406;
123  fullwave[165] = 4006.5019100888726;
124  fullwave[166] = 3815.5420466483015;
125  fullwave[167] = 3632.8786022088548;
126  fullwave[168] = 3458.209298979449;
127  fullwave[169] = 3291.2384146760082;
128  fullwave[170] = 3131.677034114027;
129 
130  std::vector<std::vector<double>> apMatrix;
131  MarquardtFitter fit = MarquardtFitter(apMatrix);
132  fit.setData(fullwave);
133  int i = 100;
134  fit.setParameters({ 0, fullwave[i], (double)i, 1 });
135  fit.fitData();
136  std::vector<double> result = fit.getParameters();
137  for (double d : result) {
138  std::cout << d << std::endl;
139  }
140  }
141 };
Class to compute Marquardt fitter.
Definition: MarquardtFitter.h:9
void setData(const std::vector< double > &zvalues)
Set the values of the original data points that are going to be fit.
Definition: MarquardtFitter.cpp:23
void setParameters(const std::vector< double > &parameters)
Set the arguments/parameters for the fitter.
Definition: MarquardtFitter.cpp:32
std::vector< double > getParameters()
Obtain marquardt fitter current arguments/parameters.
Definition: MarquardtFitter.cpp:347
void fitData()
Iterate until fitting is finished.
Definition: MarquardtFitter.cpp:292
Definition: Test.h:9