C++ 复制C++;作为特征向量的数组';s矩阵
我有一个特征矩阵:C++ 复制C++;作为特征向量的数组';s矩阵,c++,eigen,C++,Eigen,我有一个特征矩阵: Eigen::Matrix<double, Eigen::Dynamic, VECTOR_SIZE> my_matrix(num_vectors, VECTOR_SIZE); 我想将数据从数组my_vector\u data复制到my_matrix中的某一行 如何将这样的C++向量赋值到特征矩阵中的特定行(vector)中?< /p> ,可以通过以下方式将数据复制到矩阵: for (int i = 0; i < VECTOR_SIZE; i++) {
Eigen::Matrix<double, Eigen::Dynamic, VECTOR_SIZE> my_matrix(num_vectors, VECTOR_SIZE);
我想将数据从数组my_vector\u data
复制到my_matrix
中的某一行
如何将这样的C++向量赋值到特征矩阵中的特定行(vector)中?< /p> ,可以通过以下方式将数据复制到矩阵:
for (int i = 0; i < VECTOR_SIZE; i++)
{
my_matrix(0, i) = my_vector_data[i];
}
for(int i=0;i
您可以在此处找到有关系数访问器的更多信息:。您可以通过执行以下操作将数据复制到矩阵:
for (int i = 0; i < VECTOR_SIZE; i++)
{
my_matrix(0, i) = my_vector_data[i];
}
for(int i=0;i
你可以在这里找到关于系数存取器的更多信息:。如果你想让它比@MichaelSmith的答案更复杂,这应该适用于
std::array
或大小VECTOR\u size
的原始数组数据
:
using FixedSizeRowVector = Eigen::Matrix<double, 1, VECTOR_SIZE>;
size_t some_number = 10;
my_matrix.row(some_number) = Eigen::Map<FixedSizeRowVector> v(data);
使用FixedSizeRowVector=Eigen::Matrix;
大小(某些数字=10);
my_matrix.row(一些_数)=本征::映射v(数据);
但是目前我无法测试它。如果你想让它比@MichaelSmith的答案更复杂,这应该适用于
std::array
或大小为VECTOR\u size
的原始数组数据
:
using FixedSizeRowVector = Eigen::Matrix<double, 1, VECTOR_SIZE>;
size_t some_number = 10;
my_matrix.row(some_number) = Eigen::Map<FixedSizeRowVector> v(data);
使用FixedSizeRowVector=Eigen::Matrix;
大小(某些数字=10);
my_matrix.row(一些_数)=本征::映射v(数据);
但目前我无法进行测试。是否只能逐个复制?在C++数组中使用<代码>特征::map < /代码>并将其分配给矩阵中的块?它会继续看我原来的指针吗?@something something可能有某种方法允许你传入一个数组及其大小来填充一行,但它会在引擎盖下做同样的循环。如果
Eigen::Matrix
有迭代器,也可以使用std::copy()
。至于Eigen::Map
,我不确定。是否只能逐个复制?在C++数组中使用<代码>特征::map < /代码>并将其分配给矩阵中的块?它会继续看我原来的指针吗?@something something可能有某种方法允许你传入一个数组及其大小来填充一行,但它会在引擎盖下做同样的循环。如果Eigen::Matrix
有迭代器,也可以使用std::copy()
。至于Eigen::Map
,我不确定。我目前所做的与您的建议非常相似。唯一的区别是,我使用的不是.row(rowIndex)
,而是.block(rowIndex,0,1,VECTOR_SIZE)
@somethingssomething:ok<代码>行很可能是您命令的别名,以便在引擎盖下完成相同的操作。尽管如此,我认为在这里使用编译时大小并不划算——除非您经常这样做(--在这种情况下,可能会有另一个更好的解决方案。).row(…)
变量在这里更好,因为它在编译时对块的大小进行编码(您可以编写.block(rowIndex,0)
这几乎相当于.row()
)哦,您的代码可能会根据相同的机器指令进行优化。我目前所做的与您的建议非常相似。唯一的区别是,我使用的不是.row(rowIndex)
,而是.block(rowIndex,0,1,VECTOR_SIZE)
@somethingssomething:ok<代码>行很可能是您命令的别名,以便在引擎盖下完成相同的操作。尽管如此,我认为在这里使用编译时大小并不划算——除非您经常这样做(--在这种情况下,可能会有另一个更好的解决方案。).row(…)
变量在这里更好,因为它在编译时对块的大小进行编码(您可以编写.block(rowIndex,0)
这几乎相当于.row()
)此外,您的代码可能会根据相同的机器指令进行优化。