gpt4 book ai didi

c++ - 从另一个子 vector 或子矩阵创建 boost::numeric::ublas vector

转载 作者:行者123 更新时间:2023-11-28 05:37:47 27 4
gpt4 key购买 nike

我正在尝试从另一个子矩阵或子 vector 创建一个 vector 。我尝试了以下操作,但收到此错误 error: no match for ‘operator=’

 int m_size = 10; 
boost::numeric::ublas::matrix<double> u_a(m_size, m_size);
boost::numeric::ublas::vector<double> u_v(m_size);

for (int i = 0; i < m_size; i = i + 1 ){
for (int j = 0; j < m_size; j++ ){
double rand1 = (rand()%10+1) + ((double) rand() / (RAND_MAX));
u_a(i,j) = rand1;
}
double rand3 = (rand()%10+1) + ((double) rand() / (RAND_MAX));
u_v(i) = rand3;
}

for (int i = 0; i < m_size; i = i + 1 ){
boost::numeric::ublas::matrix<double> u_p(i, i);
boost::numeric::ublas::vector<double> u_v2(i);
u_p = subrange(u_a, 0, i, 0, i);
// I have tried following two
//u_v2 = subrange(u_a, 0,1,0,5);
//u_v2 = subrange(u_v, 1,i);
}

最佳答案

这条线的问题:

u_v2 = subrange(u_a, 0,1,0,5);

是矩阵的 subrange 是矩阵表达式,而不是 vector 表达式,并且您正在分配给 vector 。您可以使用 row()执行所需转换的免费功能:

u_v2 = row(subrange(u_a, 0, 1, 0, 5), 0);

这一行:

u_v2 = subrange(u_v, 1,i); 

编译正常,但因运行时错误而失败。这是因为在初始迭代中,请求的范围从 1 到 0,这是无效的。如果您想要从索引 1 开始的 i - 1 元素的子 vector ,您可以这样做:

u_v2 = subrange(u_v, 1, 1 + i); 

Live at CoLiRu

关于c++ - 从另一个子 vector 或子矩阵创建 boost::numeric::ublas vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com