C++ 将向量指定给特征矩阵中的矩阵列

C++ 将向量指定给特征矩阵中的矩阵列,c++,eigen,C++,Eigen,这个问题提得很匆忙。我的原始程序中的错误不是这里显示的代码中的打字错误。错误是在我的程序中,由于某些条件,v没有被填充 从这个线程中得到的更有用的信息是,在可接受的答案中,将std::vector复制到特征矩阵的所有行或列 我想将向量复制到矩阵的列中,如下所示: #include <Eigen/Dense> #include <vector> #include <iostream> int main() { int m = 10; std::vect

这个问题提得很匆忙。我的原始程序中的错误不是这里显示的代码中的打字错误。错误是在我的程序中,由于某些条件,v没有被填充

从这个线程中得到的更有用的信息是,在可接受的答案中,将std::vector复制到特征矩阵的所有行或列


我想将向量复制到矩阵的列中,如下所示:

#include <Eigen/Dense>
#include <vector>
#include <iostream>

int main() {
 int m = 10;

 std::vector<Eigen::VectorXd> v(m);
 Eigen::MatrixXd S(m,m);

 for (int i = 0; i != m; ++i) {
  v[i].resize(m);

  for (int j = 0; j != m; ++j) {
   v[i](j) = rand() % m;
  }

  //S.cols(i) = v[i]; //needed something like this
 }

 return 0;
}
#包括
#包括
#包括
int main(){
int m=10;
std::向量v(m);
本征::矩阵xds(m,m);
对于(int i=0;i!=m;++i){
v[i]。调整大小(m);
对于(int j=0;j!=m;++j){
v[i](j)=rand()%m;
}
//S.cols(i)=v[i];//需要这样的东西
}
返回0;
}

S的类型为特征::矩阵XXD,尺寸为mxm。v是eigent::VectorXd的std::vector,其中每个eigent::VectorXd的大小为m,并且v中有m个。关于原始问题,您需要用
eigent::Map
包装
std::vector
。您还可以/应该将该操作设置为单班轮

改写后的问题变成了打字错误
S.cols(i)
应该是
S.col(i)

intmain()
{
尺寸_t sz=6;
本征::矩阵xDS(sz,sz);
std::向量v(sz);
std::向量vv(sz);
对于(int i=0;istd::在显示v的类型时是否存在问题。请检查编辑。我想将唯一的VectorXd复制到MatrixSD的每一列。这就是为什么创建和发布a会使询问者和回答者更容易。
int main()
{
    size_t sz = 6;
    Eigen::MatrixXd S(sz, sz);
    std::vector<double> v(sz);
    std::vector<Eigen::VectorXd> vv(sz);
    for(int i = 0; i < sz; i++)
    {
        v[i] = i*2;
        vv[i] = Eigen::VectorXd::LinSpaced(sz, (i+sz), (i+sz)*2);
    }

    for (int i = 0; i != sz; ++i)
        S.col(i) = vv[i];
    std::cout << S << "\n\n";

    S.rowwise() = Eigen::Map<Eigen::RowVectorXd>(v.data(), sz);
    std::cout << S << "\n\n";

    S.colwise() = Eigen::Map<Eigen::VectorXd>(v.data(), sz);
    std::cout << S << "\n\n";

    return 0;
}