如何在Armadillo中拼接两个或多个向量?含具体示例
在Armadillo中拼接多个向量的实现方法
嗨,这个问题处理起来很直观!Armadillo提供了专门的工具来完成向量拼接,针对你给出的示例,我给你分享两种常用的实现方式:
方法一:使用join_cols()函数(官方推荐)
因为Armadillo里的vec默认是列向量,join_cols()就是专门用来拼接列向量的函数,代码可读性拉满:
#include <armadillo> using namespace arma; int main() { vec a(3, fill::randu); vec b(5, fill::randu); // 直接拼接a和b,得到长度为8的新向量c vec c = join_cols(a, b); // 打印结果验证 c.print("拼接后的向量c:"); return 0; }
如果你的向量是行向量(rowvec类型),只需要换成join_rows()函数就可以啦。要是需要拼接3个及以上的向量,还可以用初始化列表的方式链式拼接:
vec d = join_cols({a, b, some_other_vec});
方法二:通过子向量赋值拼接
如果你想手动控制元素位置,也可以通过subvec()截取子区间来完成赋值,这种方式适合需要自定义拼接位置的场景:
#include <armadillo> using namespace arma; int main() { vec a(3, fill::randu); vec b(5, fill::randu); // 先创建一个长度为8的空向量 vec c(8); // 将a的元素复制到c的前3个位置(索引0到2) c.subvec(0, 2) = a; // 将b的元素复制到c的后5个位置(索引3到7) c.subvec(3, 7) = b; c.print("拼接后的向量c:"); return 0; }
内容的提问来源于stack exchange,提问作者rozyang
相关产品推荐
相关产品推荐

