more dead

This commit is contained in:
Matthew Kennedy 2020-07-29 02:34:30 -07:00
parent 8929fe57c2
commit ea1f913c68
5 changed files with 0 additions and 173 deletions

View File

@ -1,60 +0,0 @@
/*
* avg_values.c
*
* @date Jul 23, 2013
* @author Andrey Belomutskiy, (c) 2012-2020
*/
#include "avg_values.h"
#include <math.h>
void avgFill(AvgTable *table, int count, float value) {
for (int i = 0; i < AVG_TAB_SIZE; i++) {
for (int j = 0; j < AVG_TAB_SIZE; j++) {
table->counts[i][j] = count;
table->values[i][j] = value;
}
}
}
void avgReset(AvgTable *table) {
avgFill(table, 0, 0);
}
void avgAddValue(AvgTable *table, int rpm, float key, float value) {
if (rpm >= MAX_RPM || key >= MAX_KEY) {
return;
}
int i = (int)(AVG_TAB_SIZE * rpm / MAX_RPM);
int j = (int)(AVG_TAB_SIZE * key / MAX_KEY);
table->values[i][j] += value;
table->counts[i][j]++;
}
float avgGetValueByIndexes(AvgTable *table, int i, int j) {
int count = table->counts[i][j];
if (count == 0) {
return NAN;
}
return table->values[i][j] / count;
}
float avgGetValue(AvgTable *table, int rpm, float key) {
if (rpm >= MAX_RPM || key >= MAX_KEY) {
return NAN;
}
int i = (int)(AVG_TAB_SIZE * rpm / MAX_RPM);
int j = (int)(AVG_TAB_SIZE * key / MAX_KEY);
return avgGetValueByIndexes(table, i, j);
}
int avgGetValuesCount(AvgTable *table, int rpm, float key) {
if (rpm >= MAX_RPM || key >= MAX_KEY) {
return 0;
}
int i = (int)(AVG_TAB_SIZE * rpm / MAX_RPM);
int j = (int)(AVG_TAB_SIZE * key / MAX_KEY);
return table->counts[i][j];
}

View File

@ -1,27 +0,0 @@
/*
* avg_values.h
*
* @date Jul 23, 2013
* @author Andrey Belomutskiy, (c) 2012-2020
*/
#pragma once
#define AVG_TAB_SIZE 48
#define MAX_RPM 8000
#define MAX_KEY 5
typedef struct {
float values[AVG_TAB_SIZE][AVG_TAB_SIZE];
int counts[AVG_TAB_SIZE][AVG_TAB_SIZE];
} AvgTable;
void avgReset(AvgTable *table);
void avgFill(AvgTable *table, int count, float value);
void avgAddValue(AvgTable *table, int rpm, float key, float value);
float avgGetValueByIndexes(AvgTable *table, int i, int j);
float avgGetValue(AvgTable *table, int rpm, float key);
int avgGetValuesCount(AvgTable *table, int rpm, float key);

View File

@ -1,63 +0,0 @@
/*
* @file signal_filtering.c
*
* @date Aug 5, 2013
* @author Andrey Belomutskiy, (c) 2012-2020
*/
#ifndef SIGNAL_FILTERING_C_
#define SIGNAL_FILTERING_C_
#include "signal_filtering.h"
void sfInit(SignalFiltering *fs, float K, float initialValue) {
fs->pointer = 0;
fs->K = K;
fs->Vout = initialValue;
fs->Vacc = initialValue * K;
}
static void addCopyAndSort(SignalFiltering *fs, float value) {
fs->values[fs->pointer] = value;
fs->pointer = ++fs->pointer == FILTER_SIZE ? 0 : fs->pointer;
copyArray(fs->sorted, fs->values);
for (int i = 0; i < FILTER_SIZE; i++)
for (int j = i + 1; j < FILTER_SIZE; j++)
if (fs->sorted[i] < fs->sorted[j]) {
float temp = fs->sorted[i];
fs->sorted[i] = fs->sorted[j];
fs->sorted[j] = temp;
}
}
void sfAddValue(SignalFiltering *fs, float value) {
addCopyAndSort(fs, value);
float Vin = fs->sorted[FILTER_SIZE / 2];
fs->Vacc += Vin - fs->Vout;
fs->Vout = fs->Vacc / fs->K;
}
void sfAddValue2(SignalFiltering *fs, float value) {
addCopyAndSort(fs, value);
int fromIndex = FILTER_SIZE / 4;
int toIndex = FILTER_SIZE / 4 + FILTER_SIZE / 2;
/**
* this implementation takes the average of the middle hald of the sorted values
*/
float result = 0;
for (int i = fromIndex; i < toIndex; i++)
result += fs->sorted[i];
fs->Vout = result / (FILTER_SIZE / 2);
}
float sfGetValue(SignalFiltering *fs) {
return fs->Vout;
}
#endif /* SIGNAL_FILTERING_C_ */

View File

@ -1,22 +0,0 @@
/*
* @file signal_filtering.h
*
* @date Aug 5, 2013
* @author Andrey Belomutskiy, (c) 2012-2020
*/
#pragma once
#define FILTER_SIZE 5
typedef struct {
float values[FILTER_SIZE];
float sorted[FILTER_SIZE];
int pointer;
float K, Vacc, Vout;
} SignalFiltering;
void sfInit(SignalFiltering *fs, float K, float initialValue);
void sfAddValue(SignalFiltering *fs, float value);
void sfAddValue2(SignalFiltering *fs, float value);
float sfGetValue(SignalFiltering *fs);

View File

@ -13,7 +13,6 @@ UTILSRC_CPP = \
$(UTIL_DIR)/containers/local_version_holder.cpp \
$(UTIL_DIR)/containers/table_helper.cpp \
$(UTIL_DIR)/math/pid.cpp \
$(UTIL_DIR)/math/avg_values.cpp \
$(UTIL_DIR)/math/interpolation.cpp \
$(PROJECT_DIR)/util/datalogging.cpp \
$(PROJECT_DIR)/util/loggingcentral.cpp \