Skip to content

Average sko mode #154

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jan 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 88 additions & 4 deletions common_utils/common_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <chrono>
#include <ctime>
#include <iomanip>
#include <thread>
//#STOP_GRAB_TO_INCLUDES_LIST

namespace dvs {
Expand Down Expand Up @@ -87,11 +88,11 @@ void openPlotlyHtml(const string& file_name) {
openFileBySystem(file_name);
}

void sleepMs(unsigned long milisec) {
void sleepMicroSec(unsigned long microsec) {
#ifdef _WIN32
Sleep(milisec);
std::this_thread::sleep_for(std::chrono::microseconds(microsec));
#elif __linux__
usleep(milisec * 1000);
usleep(microsec);
#endif
}

Expand Down Expand Up @@ -346,7 +347,7 @@ string vectorToString(const vector<double>& vec) {
}

string makeUniqueDavisHtmlName() {

sleepMicroSec(1);
string davis_dir;
davis_dir = "./davis_htmls/";
auto now = std::chrono::system_clock::now();
Expand Down Expand Up @@ -378,6 +379,89 @@ void transponeMatrix(std::vector<std::vector<double> >& matrix) {
matrix = std::move(transposed);
}

vector<double> calculateAverageVector(const vector<vector<double>>& vectors) {

if (vectors.empty()) {
throw std::invalid_argument("Input vector of vectors is empty.");
}

size_t vectorSize = vectors[0].size();
for (const auto& vec : vectors) {
if (vec.size() != vectorSize) {
throw std::invalid_argument("All vectors must have the same size.");
}
}

std::vector<double> averageVector(vectorSize, 0.0);
for (const auto& vec : vectors) {
for (size_t i = 0; i < vectorSize; ++i) {
averageVector[i] += vec[i];
}
}

for (double& value : averageVector) {
value /= vectors.size();
}

return averageVector;

}


vector<double> calculateStandardDeviation(const vector<double>& mean,
const vector<vector<double>>& data) {

std::vector<double> stddev(mean.size(), 0.0);
int n = data.size();
for (const auto& vec : data) {
for (size_t i = 0; i < vec.size(); ++i) {
double diff = vec[i] - mean[i];
stddev[i] += diff * diff;
}
}
for (size_t i = 0; i < stddev.size(); ++i) {
stddev[i] = std::sqrt(stddev[i] / n);
}
return stddev;
}

std::string reverseString(const std::string& input) {

std::stringstream ss(input);
std::string item;
std::vector<std::string> elements;

while (std::getline(ss, item, ',')) {
elements.push_back(item);
}

std::reverse(elements.begin(), elements.end());

std::string result;
for (size_t i = 0; i < elements.size(); ++i) {
result += elements[i];
if (i < elements.size() - 1) {
result += ',';
}
}

return result;
}


vector<double> doubleAndReverse(const vector<double>& input,
const vector<double>& mean) {

vector<double> result(input.size(), 0);
vector<double> minus_result = input;
for (size_t i = 0; i < result.size(); ++i) {
result[i] += mean[i] + input[i];
minus_result[i] = mean[i] - input[i];
}
vector<double> reversed(minus_result.rbegin(), minus_result.rend());
result.insert(result.end(), reversed.begin(), reversed.end());
return result;
}

//#STOP_GRAB_TO_DVS_NAMESPACE
}; // namespace dvs
14 changes: 13 additions & 1 deletion common_utils/common_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
#include <fstream>
#include <algorithm>
#include <stdint.h>
#include <numeric>
#include <stdexcept>
//#STOP_GRAB_TO_INCLUDES_LIST

namespace dvs {
Expand Down Expand Up @@ -37,7 +39,7 @@ bool saveStringToFile(const string& file_name,

void mayBeCreateJsWorkingFolder();

void sleepMs(unsigned long milisec);
void sleepMicroSec(unsigned long microsec);

void openPlotlyHtml(const string& file_name);

Expand Down Expand Up @@ -161,6 +163,16 @@ bool is_string_convertable_to_digit(const string& sample);

void transponeMatrix(std::vector<std::vector<double>>& matrix);

vector<double> calculateAverageVector(const vector<vector<double>>& vectors);

vector<double> calculateStandardDeviation(const vector<double>& mean,
const vector<vector<double>>& data);

vector<double> doubleAndReverse(const vector<double>& input, const vector<double>& mean);


std::string reverseString(const std::string& input);


//#STOP_GRAB_TO_DVS_NAMESPACE
}; // namespace dvs
Expand Down
Loading
Loading