|
15 | 15 | #include <chrono>
|
16 | 16 | #include <ctime>
|
17 | 17 | #include <iomanip>
|
| 18 | +#include <thread> |
18 | 19 | //#STOP_GRAB_TO_INCLUDES_LIST
|
19 | 20 |
|
20 | 21 | namespace dvs {
|
@@ -87,11 +88,11 @@ void openPlotlyHtml(const string& file_name) {
|
87 | 88 | openFileBySystem(file_name);
|
88 | 89 | }
|
89 | 90 |
|
90 |
| -void sleepMs(unsigned long milisec) { |
| 91 | +void sleepMicroSec(unsigned long microsec) { |
91 | 92 | #ifdef _WIN32
|
92 |
| - Sleep(milisec); |
| 93 | + std::this_thread::sleep_for(std::chrono::microseconds(microsec)); |
93 | 94 | #elif __linux__
|
94 |
| - usleep(milisec * 1000); |
| 95 | + usleep(microsec); |
95 | 96 | #endif
|
96 | 97 | }
|
97 | 98 |
|
@@ -346,7 +347,7 @@ string vectorToString(const vector<double>& vec) {
|
346 | 347 | }
|
347 | 348 |
|
348 | 349 | string makeUniqueDavisHtmlName() {
|
349 |
| - |
| 350 | + sleepMicroSec(1); |
350 | 351 | string davis_dir;
|
351 | 352 | davis_dir = "./davis_htmls/";
|
352 | 353 | auto now = std::chrono::system_clock::now();
|
@@ -378,6 +379,89 @@ void transponeMatrix(std::vector<std::vector<double> >& matrix) {
|
378 | 379 | matrix = std::move(transposed);
|
379 | 380 | }
|
380 | 381 |
|
| 382 | +vector<double> calculateAverageVector(const vector<vector<double>>& vectors) { |
| 383 | + |
| 384 | + if (vectors.empty()) { |
| 385 | + throw std::invalid_argument("Input vector of vectors is empty."); |
| 386 | + } |
| 387 | + |
| 388 | + size_t vectorSize = vectors[0].size(); |
| 389 | + for (const auto& vec : vectors) { |
| 390 | + if (vec.size() != vectorSize) { |
| 391 | + throw std::invalid_argument("All vectors must have the same size."); |
| 392 | + } |
| 393 | + } |
| 394 | + |
| 395 | + std::vector<double> averageVector(vectorSize, 0.0); |
| 396 | + for (const auto& vec : vectors) { |
| 397 | + for (size_t i = 0; i < vectorSize; ++i) { |
| 398 | + averageVector[i] += vec[i]; |
| 399 | + } |
| 400 | + } |
| 401 | + |
| 402 | + for (double& value : averageVector) { |
| 403 | + value /= vectors.size(); |
| 404 | + } |
| 405 | + |
| 406 | + return averageVector; |
| 407 | + |
| 408 | +} |
| 409 | + |
| 410 | + |
| 411 | +vector<double> calculateStandardDeviation(const vector<double>& mean, |
| 412 | + const vector<vector<double>>& data) { |
| 413 | + |
| 414 | + std::vector<double> stddev(mean.size(), 0.0); |
| 415 | + int n = data.size(); |
| 416 | + for (const auto& vec : data) { |
| 417 | + for (size_t i = 0; i < vec.size(); ++i) { |
| 418 | + double diff = vec[i] - mean[i]; |
| 419 | + stddev[i] += diff * diff; |
| 420 | + } |
| 421 | + } |
| 422 | + for (size_t i = 0; i < stddev.size(); ++i) { |
| 423 | + stddev[i] = std::sqrt(stddev[i] / n); |
| 424 | + } |
| 425 | + return stddev; |
| 426 | +} |
| 427 | + |
| 428 | +std::string reverseString(const std::string& input) { |
| 429 | + |
| 430 | + std::stringstream ss(input); |
| 431 | + std::string item; |
| 432 | + std::vector<std::string> elements; |
| 433 | + |
| 434 | + while (std::getline(ss, item, ',')) { |
| 435 | + elements.push_back(item); |
| 436 | + } |
| 437 | + |
| 438 | + std::reverse(elements.begin(), elements.end()); |
| 439 | + |
| 440 | + std::string result; |
| 441 | + for (size_t i = 0; i < elements.size(); ++i) { |
| 442 | + result += elements[i]; |
| 443 | + if (i < elements.size() - 1) { |
| 444 | + result += ','; |
| 445 | + } |
| 446 | + } |
| 447 | + |
| 448 | + return result; |
| 449 | +} |
| 450 | + |
| 451 | + |
| 452 | +vector<double> doubleAndReverse(const vector<double>& input, |
| 453 | + const vector<double>& mean) { |
| 454 | + |
| 455 | + vector<double> result(input.size(), 0); |
| 456 | + vector<double> minus_result = input; |
| 457 | + for (size_t i = 0; i < result.size(); ++i) { |
| 458 | + result[i] += mean[i] + input[i]; |
| 459 | + minus_result[i] = mean[i] - input[i]; |
| 460 | + } |
| 461 | + vector<double> reversed(minus_result.rbegin(), minus_result.rend()); |
| 462 | + result.insert(result.end(), reversed.begin(), reversed.end()); |
| 463 | + return result; |
| 464 | +} |
381 | 465 |
|
382 | 466 | //#STOP_GRAB_TO_DVS_NAMESPACE
|
383 | 467 | }; // namespace dvs
|
0 commit comments