Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 复制C++;作为特征向量的数组';s矩阵_C++_Eigen - Fatal编程技术网

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()
)此外,您的代码可能会根据相同的机器指令进行优化。