C++ 犰狳:将子视图更改为相同的值
我刚刚开始使用犰狳,我正在尝试将向量中的一些值更改为相同的值。我知道更改为0或1可以很容易地完成 为什么最后一行行不通?我发现做这件事的唯一方法要复杂得多C++ 犰狳:将子视图更改为相同的值,c++,c++11,armadillo,C++,C++11,Armadillo,我刚刚开始使用犰狳,我正在尝试将向量中的一些值更改为相同的值。我知道更改为0或1可以很容易地完成 为什么最后一行行不通?我发现做这件事的唯一方法要复杂得多 arma::vec x = arma::linspace<arma::vec>(1, 20, 10); std::cout << x << std::endl; x(arma::find(x > 15)).ones(); std::cout << x <
arma::vec x = arma::linspace<arma::vec>(1, 20, 10);
std::cout << x << std::endl;
x(arma::find(x > 15)).ones();
std::cout << x << std::endl;
x(arma::find(x < 6)) = arma::datum::nan; // this doesn't compile
arma::vecx=arma::linspace(1,20,10);
std::cout试试:
x(arma::find(x<6)).fill(arma::datum::nan);
犰狳有没有办法为这样的东西做AND或ORS?x(arma::find(x<6)和&arma::find(x>1)).fill(arma::datum::nan);这将进行编译,但由于大小错误而导致错误,因为结果是索引而不是布尔值
arma::uvec idx = find(x < 6);
arma::vec idxrepl(idx.n_elem);
idxrepl.fill(arma::datum::nan);
x.elem(idx) = idxrepl;
std::cout << x << std::endl;
x(arma::find(x < 6)).fill(arma::datum::nan);