Return nullopt on decoding failure

This commit is contained in:
Andreas Tsouchlos 2022-11-25 11:36:57 +01:00
parent c9a4b1b61e
commit 9818193386

View File

@ -2,6 +2,7 @@
#include <iostream>
#include <pybind11/numpy.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <pybind11/eigen.h>
@ -67,7 +68,7 @@ public:
mH_zero_indices(find_zero(H)) {
}
const Eigen::RowVectorXi
const std::optional<Eigen::RowVectorXi>
decode(const Eigen::Ref<const Eigen::VectorXd>& y) {
Eigen::RowVectorXd s = Eigen::RowVectorXd::Zero(mH.cols());
Eigen::RowVectorXi x_hat;
@ -85,8 +86,7 @@ public:
}
}
return x_hat;
// TODO: Return 'None'
return std::nullopt;
}
private:
@ -151,6 +151,7 @@ PYBIND11_MODULE(cpp_decoders, proximal) {
pybind11::class_<ProximalDecoder>(proximal, "ProximalDecoder")
.def(pybind11::init<MatrixXiR, int, double, double, double>(),
"H"_a.noconvert(), "K"_a, "omega"_a, "gamma"_a, "eta"_a)
"H"_a.noconvert(), "K"_a = 100, "omega"_a = 0.0002,
"gamma"_a = .05, "eta"_a = 1.5)
.def("decode", &ProximalDecoder::decode, "x"_a.noconvert());
}