Armadillo/C++:如何将矢量中的元素分配给立方体管?
Armadillo/C++: How to assign elements from a vector to a cube tube?
假设我有一个 3x3x4 的立方体 Q
(即一个具有 3 行、3 列和 4 个切片的立方体)和一个具有 4 个元素的列向量 C
(即与Q 片)。有没有办法让我用C填充一管Q?
我尝试了以下方法:
# include <armadillo>
cube Q(3,3,4);
mat C(4,1, fill::zeros);
Q.tube(0, 0) = C;
但它不起作用(出现运行时异常)。有没有一种方法可以在不显式循环管和向量元素的情况下实现目标?
已解决
上面的代码工作得很好。事实证明,我第一次尝试时可能做错了 其他事情 (不知道是什么)。感谢 darcamo 指出代码确实有效!
这很奇怪。我尝试了一下,它对我来说效果很好。在赋值之前尝试将 C
矩阵转换为 arma::vec
。
Q.tube(0, 0) = arma::conv_to<arma::vec>::from(C);
因为 "tube" 是一维的,无论如何分配一个完整的二维矩阵是没有意义的。虽然在你的情况下它是一个列矩阵并且它应该可以工作。
我不需要转换它,但值得一试,因为 armadillo 中的某些功能可能由于不同的标志、编译器支持等原因而无法使用。
假设我有一个 3x3x4 的立方体 Q
(即一个具有 3 行、3 列和 4 个切片的立方体)和一个具有 4 个元素的列向量 C
(即与Q 片)。有没有办法让我用C填充一管Q?
我尝试了以下方法:
# include <armadillo>
cube Q(3,3,4);
mat C(4,1, fill::zeros);
Q.tube(0, 0) = C;
但它不起作用(出现运行时异常)。有没有一种方法可以在不显式循环管和向量元素的情况下实现目标?
已解决 上面的代码工作得很好。事实证明,我第一次尝试时可能做错了 其他事情 (不知道是什么)。感谢 darcamo 指出代码确实有效!
这很奇怪。我尝试了一下,它对我来说效果很好。在赋值之前尝试将 C
矩阵转换为 arma::vec
。
Q.tube(0, 0) = arma::conv_to<arma::vec>::from(C);
因为 "tube" 是一维的,无论如何分配一个完整的二维矩阵是没有意义的。虽然在你的情况下它是一个列矩阵并且它应该可以工作。
我不需要转换它,但值得一试,因为 armadillo 中的某些功能可能由于不同的标志、编译器支持等原因而无法使用。