-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.cpp
70 lines (56 loc) · 1.92 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
// Created by Ozan Gerger on 27/02/2024.
//
#include "HanningFilter/HanningFilter.h"
#include "LowPassFilter/LowPassFilter.h"
#include "HighPassFilter/HighPassFilter.h"
#include "NotchFilter/NotchFilter.h"
#include <cmath>
#include <vector>
#include <fstream>
using namespace std;
float rad_to_hz(float rad) {
return rad * 2.0F * (float) M_PI;
}
float sinf_t(float amplitude, float freq, float t) {
return amplitude * sinf(t * rad_to_hz(freq));
}
int main() {
float tSample = 0.01F;
HanningFilter hf;
LowPassFilter lpf(rad_to_hz(10.0F), tSample);
HighPassFilter hpf(rad_to_hz(50.0F), tSample);
NotchFilter nf(rad_to_hz(2.5F), 0.25F, tSample);
int N = 200;
vector<float> t(N);
vector<float> outFilter(N);
vector<float> hf_data(N);
vector<float> lpf_data(N);
vector<float> hpf_data(N);
vector<float> nf_data(N);
ofstream outfile;
outfile.open("data.csv", ios::out | ios::trunc);
outfile << "time,hf_raw_data,hf_data";
outfile << ",hpf_raw_data,hpf_data";
outfile << ",lpf_raw_data,lpf_data";
outfile << ",nf_raw_data,nf_data" << endl;
for (int i = 0; i < N; i++) {
t[i] = (float) i * tSample;
hf_data[i] = sinf_t(2.0F, 1.0F, t[i]) +
sinf_t(0.25F, 15.0F, t[i]);
hf.Update(hf_data[i]);
hpf_data[i] = sinf_t(0.5F, 1.0F, t[i]) +
sinf_t(0.1F, 40.0F, t[i]);
hpf.Update(hpf_data[i]);
lpf_data[i] = sinf_t(0.5F, 1.0F, t[i]) +
sinf_t(0.1F, 20.0F, t[i]);
lpf.Update(lpf_data[i]);
nf_data[i] = sinf_t(2.0F, 5.0F, t[i]);
nf.Update(nf_data[i]);
outfile << t[i] << "," << hf_data[i] << "," << hf.GetOutput();
outfile << "," << hpf_data[i] << "," << hpf.GetOutput();
outfile << "," << lpf_data[i] << "," << lpf.GetOutput();
outfile << "," << nf_data[i] << "," << nf.GetOutput() << endl;
}
outfile.close();
}