Skip to content
Snippets Groups Projects
Commit 4eab096c authored by Erik Strand's avatar Erik Strand
Browse files

Sample points in C++

parent 53704c96
Branches
No related tags found
No related merge requests found
...@@ -12,7 +12,6 @@ include(cmake/shared_settings.cmake) ...@@ -12,7 +12,6 @@ include(cmake/shared_settings.cmake)
add_executable(compressed_sensing add_executable(compressed_sensing
main.cpp main.cpp
vector.h
) )
target_link_libraries(compressed_sensing shared_settings Eigen3::Eigen) target_link_libraries(compressed_sensing shared_settings Eigen3::Eigen)
target_compile_features(compressed_sensing PUBLIC cxx_std_17) target_compile_features(compressed_sensing PUBLIC cxx_std_17)
#include <Eigen/Core>
#include <iostream> #include <iostream>
#include "vector.h"
using namespace cs; using Scalar = double;
using Vector = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>;
using Matrix = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>;
void python_print(char const* name, Vector const& x) {
std::cout << name << " = np.array([";
std::cout << x[0];
for (uint32_t i = 1; i < x.size(); ++i) {
std::cout << ", " << x[i];
}
std::cout << "])\n";
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
int main() { int main() {
Vector<double> x = Vector<double>::Random(5); //Vector x = Vector::Random(5);
std::cout << x << '\n'; //std::cout << x << '\n';
Scalar pi = 3.1415926535897932384626433832795;
Scalar f1 = 697;
Scalar f2 = 1209;
Scalar sample_period = 0.01;
uint32_t n_samples = 10;
Vector sample_times = (sample_period / n_samples) * Vector::LinSpaced(n_samples, 0, n_samples);
python_print("sample_times", sample_times);
Vector sample_rads = 2 * pi * sample_times;
Vector sample_values = sin((f1 * sample_rads).array()) + sin((f2 * sample_rads).array());
python_print("sample_values", sample_values);
return 0; return 0;
} }
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
sample_times = np.array([0, 0.00111111, 0.00222222, 0.00333333, 0.00444444, 0.00555556, 0.00666667, 0.00777778, 0.00888889, 0.01])
sample_values = np.array([0, -0.155307, -1.22423, 1.08309, 1.2909, -1.69749, -0.428405, 1.04634, -0.0577232, 0.348445])
plt.plot(sample_times, sample_values)
plt.savefig("fig_a.png")
plt.close()
#ifndef FUNSIM_VECTOR_H
#define FUNSIM_VECTOR_H
#include <Eigen/Core>
namespace cs {
//--------------------------------------------------------------------------------------------------
template <typename T>
using Vector = Eigen::Matrix<T, Eigen::Dynamic, 1>;
//--------------------------------------------------------------------------------------------------
template <typename T>
using Matrix = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>;
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment