【发布时间】:2022-01-08 17:22:39
【问题描述】:
我正在尝试按绝对值对 RowVector 进行排序,并以降序返回与无序向量相对应的索引。所以如果我有:x_rcv = (-2.5,3.9,1.5) oei(索引向量)应该读为:oei = (2,1,3)
所以我总是得到一个 oei = (0,0,0,0,0,0,0)
OEI.cpp
#include "OEI.h"
#include <eigen3/Eigen/Dense>
#include <iostream>
#include <algorithm>
void OEI::calculateOEI(RowVectorXd &v)
{
std::sort(oei.data(), oei.data() + oei.size(), [&v](int i1, int i2)
{ return abs(v[i1]) < abs(v[i2]); });
std::cout << oei.size() << std::endl;
}
OEI.h
#include <eigen3/Eigen/Dense>
#include <iostream>
#include <algorithm>
using namespace Eigen;
class OEI
{
public:
int dim;
OEI(int dim) : dim(dim) { oei = RowVectorXd::Zero(dim); };
RowVectorXd oei;
public:
void calculateOEI(RowVectorXd &v);
};
main.cpp
int main(){
Encode vec(4, 4, 7);
awgn channel(7);
OEI errorvec(7);
vec.encodeDataVector();
cout << vec.x << endl;
channel.addGausian(vec.x);
cout << channel.x_rcv << endl;
errorvec.calculateOEI(channel.x_rcv);
cout << errorvec.oei << endl;
}
我只发布了不起作用的相关代码 sn-ps。如果您需要更多信息,请告诉我。
谢谢!
【问题讨论】: